From sivan at ubuntu.com Wed Jun 14 09:26:56 2006 From: sivan at ubuntu.com (Sivan Greenberg) Date: Wed, 14 Jun 2006 16:26:56 +0300 Subject: Patch to fix #314139 [REVISION PROPOSAL] In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Message-ID: <1150291617.5322.3.camel@localhost> On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf at free.fr Wed Jun 14 15:43:02 2006 From: patrick.jacquotf at free.fr (Patrick Jacquot) Date: Wed, 14 Jun 2006 21:43:02 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Message-ID: <1150314184.8687.75.camel@proton> Le lundi 29 mai 2006 ? 14:15 +0200, Alexander Larsson a ?crit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick -------------- next part -------------- [pjacquot at neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot at neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) From alexl at redhat.com Thu Jun 15 03:31:16 2006 From: alexl at redhat.com (Alexander Larsson) Date: Thu, 15 Jun 2006 09:31:16 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Message-ID: <1150356676.26621.5.camel@greebo> On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 ? 14:15 +0200, Alexander Larsson a ?crit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application at ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl at redhat.com Thu Jun 15 03:32:35 2006 From: alexl at redhat.com (Alexander Larsson) Date: Thu, 15 Jun 2006 09:32:35 +0200 Subject: Patch to fix #314139 [REVISION PROPOSAL] In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Message-ID: <1150356755.26621.8.camel@greebo> On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot at anpe.fr Thu Jun 15 04:16:23 2006 From: patrick.jacquot at anpe.fr (Patrick Jacquot) Date: Thu, 15 Jun 2006 10:16:23 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1150356676.26621.5.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> Message-ID: <44911757.6070100@anpe.fr> Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 ? 14:15 +0200, Alexander Larsson a ?crit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application at ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl at redhat.com alla at lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl at redhat.com Thu Jun 15 04:31:46 2006 From: alexl at redhat.com (Alexander Larsson) Date: Thu, 15 Jun 2006 10:31:46 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Message-ID: <1150360307.26621.28.camel@greebo> On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan at ubuntu.com Thu Jun 15 04:36:22 2006 From: sivan at ubuntu.com (Sivan Greenberg) Date: Thu, 15 Jun 2006 11:36:22 +0300 Subject: Patch to fix #314139 [REVISION PROPOSAL] In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Message-ID: <1150360583.5504.4.camel@localhost> On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel at embl.fr Thu Jun 15 07:58:20 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Thu, 15 Jun 2006 13:58:20 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1146067801.621.43.camel@greebo> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> Message-ID: <44914B5C.8040003@embl.fr> Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Fr?d?ric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl at redhat.com alla at lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060615/d1247468/attachment.vcf From ruaudel at embl.fr Thu Jun 15 08:26:38 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Thu, 15 Jun 2006 14:26:38 +0200 Subject: Problem with popup menu cache system In-Reply-To: <44914B5C.8040003@embl.fr> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> Message-ID: <449151FE.2070906@embl.fr> Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Fr?d?ric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Fr?d?ric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl at redhat.com alla at lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060615/e05336d2/attachment.vcf From patrick.jacquotf at free.fr Thu Jun 15 13:34:26 2006 From: patrick.jacquotf at free.fr (Patrick Jacquot) Date: Thu, 15 Jun 2006 19:34:26 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Message-ID: <1150392867.8687.79.camel@proton> Le jeudi 15 juin 2006 ? 10:31 +0200, Alexander Larsson a ?crit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl at redhat.com Fri Jun 16 02:45:06 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 08:45:06 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Message-ID: <1150440307.26621.41.camel@greebo> On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 ? 10:31 +0200, Alexander Larsson a ?crit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan at ubuntu.com Fri Jun 16 03:39:05 2006 From: sivan at ubuntu.com (Sivan Greenberg) Date: Fri, 16 Jun 2006 10:39:05 +0300 Subject: Patch to fix #314139 [REVISION PROPOSAL] In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Message-ID: <1150443545.5513.18.camel@localhost> On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl at redhat.com Fri Jun 16 04:15:03 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 10:15:03 +0200 Subject: Patch to fix #314139 [REVISION PROPOSAL] In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Message-ID: <1150445703.26621.60.camel@greebo> On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl at redhat.com Fri Jun 16 04:35:30 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 10:35:30 +0200 Subject: Problem with popup menu cache system In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Message-ID: <1150446930.26621.70.camel@greebo> On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin at xs4all.nl Fri Jun 16 05:03:41 2006 From: rubin at xs4all.nl (Rubin) Date: Fri, 16 Jun 2006 11:03:41 +0200 Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) Message-ID: <1150448621.29988.7.camel@thinkpad> Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin at xs4all.nl)when replying to this! Thanks! Rubin. From alexl at redhat.com Fri Jun 16 05:54:32 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 11:54:32 +0200 Subject: Problem with popup menu cache system In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Message-ID: <1150451672.26621.77.camel@greebo> On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Fr?d?ric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl at redhat.com Fri Jun 16 08:12:19 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 14:12:19 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Message-ID: <1150459940.26621.88.camel@greebo> On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel at embl.fr Fri Jun 16 08:27:02 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 14:27:02 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1150460132.26621.91.camel@greebo> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> Message-ID: <4492A396.6040708@embl.fr> Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Fr?d?ric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/3a96ce68/attachment.vcf From alexl at redhat.com Fri Jun 16 08:35:57 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 14:35:57 +0200 Subject: Problem with popup menu cache system In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Message-ID: <1150461357.26621.94.camel@greebo> On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Fr?d?ric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel at embl.fr Fri Jun 16 08:40:46 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 14:40:46 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1150461357.26621.94.camel@greebo> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> Message-ID: <4492A6CE.1040904@embl.fr> Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/2462b73c/attachment.vcf From patrick.jacquot at anpe.fr Fri Jun 16 07:53:51 2006 From: patrick.jacquot at anpe.fr (Patrick Jacquot) Date: Fri, 16 Jun 2006 13:53:51 +0200 Subject: nautilus hangs occasionnaly on a right click In-Reply-To: <1150440307.26621.41.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> Message-ID: <44929BCF.2080909@anpe.fr> Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 ? 10:31 +0200, Alexander Larsson a ?crit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl at redhat.com alla at lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl at redhat.com Fri Jun 16 08:48:24 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 14:48:24 +0200 Subject: Problem with popup menu cache system In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Message-ID: <1150462104.1962.1.camel@greebo> On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Fr?d?ric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel at embl.fr Fri Jun 16 08:53:36 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 14:53:36 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1150462104.1962.1.camel@greebo> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> Message-ID: <4492A9D0.1030804@embl.fr> Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/33619d98/attachment.vcf From alexl at redhat.com Fri Jun 16 09:08:24 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 15:08:24 +0200 Subject: Problem with popup menu cache system In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Message-ID: <1150463304.1962.5.camel@greebo> On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Fr?d?ric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris at gnome-de.org Fri Jun 16 10:01:00 2006 From: chris at gnome-de.org (Christian Neumair) Date: Fri, 16 Jun 2006 16:01:00 +0200 Subject: [PATCH] Improve session management, attempt 2 Message-ID: <1150466460.16424.7.camel@localhost.localdomain> The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair -------------- next part -------------- A non-text attachment was scrubbed... Name: nautilus-sm2.diff Type: text/x-patch Size: 29991 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/2e831b97/attachment-0001.bin From ruaudel at embl.fr Fri Jun 16 10:14:34 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 16:14:34 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1150463304.1962.5.camel@greebo> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> Message-ID: <4492BCC9.3070701@embl.fr> Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Fr?d?ric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/8f80b14f/attachment.vcf From alexl at redhat.com Fri Jun 16 10:22:18 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 16:22:18 +0200 Subject: New permissions page Message-ID: <1150467738.1962.12.camel@greebo> I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl at redhat.com Fri Jun 16 08:15:32 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 14:15:32 +0200 Subject: Problem with popup menu cache system In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Message-ID: <1150460132.26621.91.camel@greebo> On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Fr?d?ric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl at redhat.com Fri Jun 16 11:40:37 2006 From: alexl at redhat.com (Alexander Larsson) Date: Fri, 16 Jun 2006 17:40:37 +0200 Subject: Problem with popup menu cache system In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Message-ID: <1150472437.1962.14.camel@greebo> On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Fr?d?ric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko at yahoo.com Sat Jun 17 03:21:00 2006 From: jnoreiko at yahoo.com (Joachim Noreiko) Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) Subject: New permissions page In-Reply-To: Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> --- nautilus-list-request at gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel at embl.fr Fri Jun 16 05:02:20 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 11:02:20 +0200 Subject: Problem with popup menu cache system Message-ID: <4492739C.3080608@embl.fr> Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/76c57ac4/attachment.vcf From ruaudel at embl.fr Fri Jun 16 07:53:47 2006 From: ruaudel at embl.fr (=?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?=) Date: Fri, 16 Jun 2006 13:53:47 +0200 Subject: Problem with popup menu cache system In-Reply-To: <1150451672.26621.77.camel@greebo> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> Message-ID: <44929BCB.3000405@embl.fr> Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Fr?d?ric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl at redhat.com alla at lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > -------------- next part -------------- A non-text attachment was scrubbed... Name: ruaudel.vcf Type: text/x-vcard Size: 206 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060616/58f20420/attachment.vcf From alexl at redhat.com Mon Jun 19 05:33:26 2006 From: alexl at redhat.com (Alexander Larsson) Date: Mon, 19 Jun 2006 11:33:26 +0200 Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Message-ID: <1150709607.1962.31.camel@greebo> On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin at xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel at gmail.com Sat Jun 17 22:36:28 2006 From: mark.kegel at gmail.com (Mark Kegel) Date: Sat, 17 Jun 2006 20:36:28 -0600 Subject: widget advice for nautilus view Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl at redhat.com Mon Jun 19 05:31:44 2006 From: alexl at redhat.com (Alexander Larsson) Date: Mon, 19 Jun 2006 11:31:44 +0200 Subject: New permissions page In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Message-ID: <1150709505.1962.28.camel@greebo> On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request at gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! -------------- next part -------------- A non-text attachment was scrubbed... Name: permissions1.png Type: image/png Size: 44933 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060619/4abf551d/attachment-0004.png -------------- next part -------------- A non-text attachment was scrubbed... Name: permissions2.png Type: image/png Size: 53183 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060619/4abf551d/attachment-0005.png -------------- next part -------------- A non-text attachment was scrubbed... Name: permissions3.png Type: image/png Size: 47562 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060619/4abf551d/attachment-0006.png -------------- next part -------------- A non-text attachment was scrubbed... Name: permissions4.png Type: image/png Size: 60615 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060619/4abf551d/attachment-0007.png From alexl at redhat.com Mon Jun 19 08:28:35 2006 From: alexl at redhat.com (Alexander Larsson) Date: Mon, 19 Jun 2006 14:28:35 +0200 Subject: [PATCH] Improve session management, attempt 2 In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Message-ID: <1150720115.16397.6.camel@greebo> On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl at redhat.com Mon Jun 19 09:49:38 2006 From: alexl at redhat.com (Alexander Larsson) Date: Mon, 19 Jun 2006 15:49:38 +0200 Subject: widget advice for nautilus view In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Message-ID: <1150724978.16397.9.camel@greebo> On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris at gnome-de.org Mon Jun 19 11:22:57 2006 From: chris at gnome-de.org (Christian Neumair) Date: Mon, 19 Jun 2006 17:22:57 +0200 Subject: [PATCH] Improve session management, attempt 2 In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Message-ID: <1150730577.5245.4.camel@localhost.localdomain> Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl at redhat.com Mon Jun 19 11:54:09 2006 From: alexl at redhat.com (Alexander Larsson) Date: Mon, 19 Jun 2006 17:54:09 +0200 Subject: [PATCH] Improve session management, attempt 2 In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Message-ID: <1150732450.16397.12.camel@greebo> On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl at redhat.com Tue Jun 20 04:09:00 2006 From: alexl at redhat.com (Alexander Larsson) Date: Tue, 20 Jun 2006 10:09:00 +0200 Subject: Overlapping icons, again In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Message-ID: <1150790940.16397.21.camel@greebo> On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf at cbk.poznan.pl Tue Jun 20 09:11:58 2006 From: olaf at cbk.poznan.pl (Olaf =?iso-8859-2?Q?Fr=B1czyk?=) Date: Tue, 20 Jun 2006 15:11:58 +0200 Subject: New permissions page In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Message-ID: <1150809118.17794.51.camel@venus.local.navi.pl> On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf Fr?czyk From alexl at redhat.com Tue Jun 20 09:39:46 2006 From: alexl at redhat.com (Alexander Larsson) Date: Tue, 20 Jun 2006 15:39:46 +0200 Subject: New permissions page In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Message-ID: <1150810787.16397.40.camel@greebo> On Tue, 2006-06-20 at 15:11 +0200, Olaf Fr?czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl at redhat.com alla at lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris at gnome-de.org Tue Jun 20 13:58:49 2006 From: chris at gnome-de.org (Christian Neumair) Date: Tue, 20 Jun 2006 19:58:49 +0200 Subject: [PATCH] Improve session management, attempt 2 In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Message-ID: <1150826329.5240.5.camel@localhost.localdomain> Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair -------------- next part -------------- A non-text attachment was scrubbed... Name: nautilus-sm3.diff Type: text/x-patch Size: 29753 bytes Desc: not available Url : http://mail.gnome.org/archives/nautilus-list/attachments/20060620/dc5fe17c/attachment-0001.bin From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request. See you. -- Manuel Clos, llanero@jazzfree.com use what's best for you. Don't use what you feel you "have" to. From james@pharaohsystems.com Fri Jun 2 05:47:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2368D3B02C0 for ; Fri, 2 Jun 2006 05:47:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15548-06 for ; Fri, 2 Jun 2006 05:47:36 -0400 (EDT) Received: from lan.apnuk.com (lan.apnuk.com [212.50.185.139]) by menubar.gnome.org (Postfix) with SMTP id 5004E3B10A9 for ; Fri, 2 Jun 2006 05:47:35 -0400 (EDT) Received: (qmail 26337 invoked from network); 2 Jun 2006 09:47:32 -0000 Received: from unknown (HELO apollo.leeds.apnuk.com) (10.5.30.2) by vulpine.leeds.apnuk.com with SMTP; 2 Jun 2006 09:47:32 -0000 From: James Pharaoh To: nautilus-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-07kukkHUo3K+dfnSUGad" Date: Fri, 02 Jun 2006 10:49:00 +0100 Message-Id: <1149241741.11467.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 02 Jun 2006 13:45:59 -0400 Subject: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 09:47:38 -0000 --=-07kukkHUo3K+dfnSUGad Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I like being able to give folders icons in Nautilus but the "metadata" method is not much use because it is difficult to copy with the folder if I don't use Nautilus to copy it. I'd like to be able to stick a file, say ".nautilus-folder-icon" in the directory to set a default icon, obviously this would be overridden by any metadata icon set. In fact, the name of the file could be set in gconf and this could turn the option on. I assume this wouldn't be too hard to do, I'd like to have a go myself but would appreciate a few hints from someone who knows where to look in the code. Thanks, James --=-07kukkHUo3K+dfnSUGad Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEgAmMOov9Pl/is1ERAjYHAKCHw/iPWN55VZBzbRSsif0Q5YQOeQCfRp1k ttjF+6rSt545Z6oKNuRada0= =ftMn -----END PGP SIGNATURE----- --=-07kukkHUo3K+dfnSUGad-- From patrick.jacquotf@free.fr Fri Jun 2 13:59:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AB21E3B0170 for ; Fri, 2 Jun 2006 13:59:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12964-10 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 759E43B0176 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 5E8A647E61; Fri, 2 Jun 2006 19:59:08 +0200 (CEST) From: Patrick Jacquot To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jun 2006 19:58:55 +0200 Message-Id: <1149271136.8687.44.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.011, BAYES_00=-2.599] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 17:59:13 -0000 Le vendredi 02 juin 2006 à 10:49 +0100, James Pharaoh a écrit : > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. > > Thanks, > > James Maybe adding emblems to the folder icons could achieve what you want. Those emblems superimpose themselves over the folder icon, you can have a folder with a yellow star superimposed, another one with a rocket superimposed and so on. I devised a small utility to be able to add such emblems to a directory icon (or a file icon) from the command line (or from a script) See the chemb project on sourceforge -- Patrick From sacha@forty2.be Fri Jun 2 15:05:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 50A4B3B0E50 for ; Fri, 2 Jun 2006 15:05:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17528-06 for ; Fri, 2 Jun 2006 15:05:55 -0400 (EDT) Received: from adicia.telenet-ops.be (adicia.telenet-ops.be [195.130.132.56]) by menubar.gnome.org (Postfix) with ESMTP id 955E03B0A09 for ; Fri, 2 Jun 2006 15:05:47 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by adicia.telenet-ops.be (Postfix) with SMTP id 3A604705D0 for ; Fri, 2 Jun 2006 21:05:46 +0200 (CEST) Received: from romulus.local (dD5E02B5C.access.telenet.be [213.224.43.92]) by adicia.telenet-ops.be (Postfix) with ESMTP id F3AA0705F6 for ; Fri, 2 Jun 2006 21:05:45 +0200 (CEST) From: Sacha Vandenbroeck To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 02 Jun 2006 21:05:50 +0100 Message-Id: <1149278750.14015.9.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Dropline GNOME Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.395 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.395 X-Spam-Level: X-Mailman-Approved-At: Sat, 03 Jun 2006 08:07:21 -0400 Subject: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 19:05:56 -0000 I posted a Nautilus bug, but now ofcourse the developers need a backtrace of this crash. But how do I do this? I have to compile nautilus myself so I tried to do this with the "--enable-debug" option and then tried to get a backtrace with gdb (following the instructions at this link https://wiki.ubuntu.com/Backtrace ) but I still can't get a full backtrace. I don't get the "no debugging symbols found" messages, but still the backtrace is as useless as before. So how do I build nautilus to debug it? I'm sorry if this sounds silly, but I never tried this before and there is almost no information in human language on this topic (I'm not a developer myself but still I want to help make Gnome better). From seb128@debian.org Sat Jun 3 08:52:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDCC33B05AB for ; Sat, 3 Jun 2006 08:52:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03672-09 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from smtp7.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.24]) by menubar.gnome.org (Postfix) with ESMTP id 8BBB13B05D6 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from [192.168.0.2] (ANancy-151-1-75-89.w81-50.abo.wanadoo.fr [81.50.153.89]) by mwinf0706.orange.fr (SMTP Server) with ESMTP id 068A41C0008D for ; Sat, 3 Jun 2006 14:52:36 +0200 (CEST) X-ME-UUID: 20060603125237268.068A41C0008D@mwinf0706.orange.fr From: Sebastien Bacher To: nautilus-list@gnome.org In-Reply-To: <1149278750.14015.9.camel@localhost> References: <1149278750.14015.9.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15 Date: Sat, 03 Jun 2006 14:52:31 +0200 Message-Id: <1149339151.5915.0.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.526 tagged_above=-999 required=2 tests=[AWL=0.073, BAYES_00=-2.599] X-Spam-Score: -2.526 X-Spam-Level: Subject: Re: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 12:52:41 -0000 Le vendredi 02 juin 2006 à 21:05 +0100, Sacha Vandenbroeck a écrit : > I posted a Nautilus bug, but now ofcourse the developers need a > backtrace of this crash. But how do I do this? I have to compile > nautilus myself Hi, No need to build a debug package, just "apt-get install nautilus-dbg" Cheers, Sebastien Bacher From mark.kegel@gmail.com Sat Jun 3 12:08:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 7138E3B0702 for ; Sat, 3 Jun 2006 12:08:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14511-09 for ; Sat, 3 Jun 2006 12:08:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by menubar.gnome.org (Postfix) with ESMTP id 144503B05AE for ; Sat, 3 Jun 2006 12:08:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so815420uge for ; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=W3JRAemVm7OT3HZt2c9RWshzsIBh1m2jBCk+XhCdQhCGtf2oEFpImrEbBnTXY1DChmA46aVlKGGeltQrmOjjppin/uUnWUn1wFkAfVdppvvGeJ1suY0q6OhYugz4aF93JKNrMlbKo2m1+WD50q1Q+pc2WLm4FHQNnkoCAPnIwGs= Received: by 10.67.97.7 with SMTP id z7mr1786225ugl; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) Received: by 10.66.254.18 with HTTP; Sat, 3 Jun 2006 09:08:16 -0700 (PDT) Message-ID: <8a5993840606030908n9df00b8k8cdfb555b95c3dbe@mail.gmail.com> Date: Sat, 3 Jun 2006 10:08:16 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.042 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_BL_SPAMCOP_NET=1.558, SPF_PASS=-0.001] X-Spam-Score: -1.042 X-Spam-Level: X-Mailman-Approved-At: Sun, 04 Jun 2006 08:36:32 -0400 Subject: volumes not showing in nautilus X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 16:08:18 -0000 I've been running gnome 2.14 for about two weeks now and am very pleased with it. Unfortunately, nautilus isn't showing the partitions I have mounted, as it did in 2.12. I've set the appropriate settings with gconf (at least I think I have) with no luck. Anyone have any ideas or pointers to a solution? Mark Kegel From xclaesse@gmail.com Mon Jun 5 05:57:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 994D93B031D; Mon, 5 Jun 2006 05:57:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20358-05; Mon, 5 Jun 2006 05:56:59 -0400 (EDT) Received: from outmx026.isp.belgacom.be (outmx026.isp.belgacom.be [195.238.4.91]) by menubar.gnome.org (Postfix) with ESMTP id 5AEF03B00CE; Mon, 5 Jun 2006 05:56:58 -0400 (EDT) Received: from outmx026.isp.belgacom.be (localhost [127.0.0.1]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559upxm015348; Mon, 5 Jun 2006 11:56:51 +0200 (envelope-from ) Received: from [10.0.0.3] (244-16.241.81.adsl.skynet.be [81.241.16.244]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559ulet015294; Mon, 5 Jun 2006 11:56:48 +0200 (envelope-from ) From: Xavier Claessens To: Christian Neumair In-Reply-To: <1147197585.5045.11.camel@localhost> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-nAeSl/tN81bv5MmP9h9B" Date: Mon, 05 Jun 2006 11:56:49 +0200 Message-Id: <1149501410.7231.27.camel@zdra-desktop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.999 tagged_above=-999 required=2 tests=[AWL=-0.469, BAYES_00=-2.599, SPF_NEUTRAL=1.069] X-Spam-Score: -1.999 X-Spam-Level: Cc: Mark McLoughlin , Vincent Untz , "nautilus-list@gnome.org" Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 09:57:01 -0000 --=-nAeSl/tN81bv5MmP9h9B Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Le mardi 09 mai 2006 =C3=A0 19:59 +0200, Xavier Claessens a =C3=A9crit : > Le mardi 09 mai 2006 =C3=A0 18:59 +0200, Christian Neumair a =C3=A9crit : > > Am Dienstag, den 09.05.2006, 10:25 +0200 schrieb Xavier Claessens: > > > Le mardi 09 mai 2006 =C3=A0 10:01 +0200, Christian Neumair a =C3=A9cr= it : > > > > > For volume icons from the desktop, is it possible to make it work= like > > > > > in computer:/// ? nautilus should generate on-the-fly same .drive= files. > > > > > Like that we are sure that at least icons from desktop and from > > > > > computer:/// react the same way. > > > >=20 > > > > Passing around on-the-fly generated files (which would have to be p= ut > > > > into file:///tmp) isn't a good idea IMHO, because it requires sniff= ing > > > > foreach passed-in URI. My proposal tried to address the fact that s= ome > > > > applications are interested in volumes or drives but not in their > > > > corresponding files, since the actual volume/drive data can be quer= ied > > > > from the volume monitor. > > >=20 > > > Ok. So computer:/// should works like x-nautilus-desktop:/// and > > > nautilus should never use the on-the-fly generated .drive files. Like > > > that most problems are solved because icons from desktop aren't accep= ted > > > for dropping anywhere. > >=20 > > No, it doesn't solve the problem, because - as you pointed out - not > > doing anything isn't really user-friendly either. IMHO it would be the > > best to operate on the drive's activation URI when dropping a volume or > > drive file to another folder. >=20 > As I understand we have currently 2 representations possible for a > drive/volume icon in nautilus. One for computer:/// and another for > x-nautilus-desktop:///. So I think the first step is to have only one > representation. We should only use the first or the second or maybe > another system which will replace the two. >=20 > So my question is: we should use computer:/// representation for > x-nautilus-desktop:/// ? Or the reverse ? or something else ? >=20 > When we have one single representation we should patch other > applications (including gnome-panel and nautilus itself) to accept in > one way or another DnD of this representation. >=20 > Xavier Claessens. >=20 So what can we do now for GNOME 2.15 ? I think nautilus should really have a common way handling drives/volumes files. Here is an example of *really* bad design: zdra@zdra-desktop:~/programmation/gnome/nautilus$ grep -r "eject_for_type (GnomeVFSDeviceType type)" * libnautilus-private/nautilus-desktop-link-monitor.c:eject_for_type (GnomeVFSDeviceType type) src/nautilus-places-sidebar.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-directory-view.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-tree-view.c:eject_for_type (GnomeVFSDeviceType type) Yes this basic function is defined 4 times in different files ! There is also functions like the one which says if an GnomeVFSDrive should have a "eject", "unmount", "format",etc popup menu option which is copy/pasted everywhere in nautilus. So what I propose is adding some objects to libnautilus-private to have a common way handling Drive and Volume files. In the same way of nautilus_destkop_* we can make something like nautilus_volume_file and nautilus_drive_file which would be used to computer:///, x-nautilus-desktop:///,etc. On this objects we can have methods like gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); to replace the eject_for_type(). And void nautilus_volume_file_get_options (NautilusDriveFile*, gboolean *show_mount, gboolean *show_unmount, gboolean *show_eject, gboolean *show_format); To know which options we can show for this file. I don't know exactly how all that can work and if that's a good idea but I can work on it this summer. I'll experiment some patches as soon as my exams finishes. I would be happy to have comments on this. Xavier Claessens. --=-nAeSl/tN81bv5MmP9h9B Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEg//h6dEBUn2qPAMRAtmXAKCB3U3DFjVEGjbAazBKl7zNZwTUFQCgjxxd +HMH0MmP9vv41UqLjYgldaE= =BuCn -----END PGP SIGNATURE----- --=-nAeSl/tN81bv5MmP9h9B-- From jamesat@comcast.net Wed Jun 7 07:38:09 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 70A7B3B0C14 for ; Wed, 7 Jun 2006 07:38:09 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07291-05 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [63.240.77.85]) by menubar.gnome.org (Postfix) with ESMTP id 61B153B0C89 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from [10.10.10.51] (c-66-31-77-146.hsd1.nh.comcast.net[66.31.77.146]) by comcast.net (sccrmhc15) with SMTP id <2006060711380501500ch6mte>; Wed, 7 Jun 2006 11:38:05 +0000 From: James Tremblay To: nautilus-list@gnome.org Content-Type: text/plain Date: Wed, 07 Jun 2006 07:37:40 -0400 Message-Id: <1149680260.8506.2.camel@sled10.liberty> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: Yes, score=2.415 tagged_above=-999 required=2 tests=[BAYES_20=-0.74, DNS_FROM_RFC_POST=1.708, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: 2.415 X-Spam-Level: ** X-Spam-Flag: YES Subject: connectivity issues X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 11:38:09 -0000 is there any plan to integrate standards based slp services to Nautilus. this is a ridiculous question to ask of a modern network browser but i'm asking cuz it's needed! From sivan@ubuntu.com Wed Jun 7 14:39:47 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 663863B0546 for ; Wed, 7 Jun 2006 14:39:47 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05495-10 for ; Wed, 7 Jun 2006 14:39:44 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id BF82C3B069F for ; Wed, 7 Jun 2006 14:39:43 -0400 (EDT) Received: from bzq-84-108-224-57.cablep.bezeqint.net (bzq-84-108-224-57.cablep.bezeqint.net [84.108.224.57]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BC32D44DD for ; Wed, 7 Jun 2006 20:39:36 +0200 (CEST) From: Sivan Greenberg To: nautilus-list@gnome.org In-Reply-To: <1149074455.5848.7.camel@localhost> References: <1149074455.5848.7.camel@localhost> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 07 Jun 2006 21:39:32 +0300 Message-Id: <1149705572.8926.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.369 tagged_above=-999 required=2 tests=[AWL=0.095, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.369 X-Spam-Level: Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 18:39:47 -0000 Hi Again, the wonderful users and hacker of nautilus. I would like to bring your attention again to a patch I have created originally using pure gnome_vfs functions to check if the source's parent is read only, and if so default to a copy operation instead of a move operation which previously caused hassle, confusing and much mess among especially converts from other operating system, as to why "Such a trivial operation needs to involve hassle and why do I even need to think about it and select copy from the context menu??" etc.. ;-) So after realizing this patch is not good enough, due to it being inside a callback which gets called multiple times per each DND operation, Manny on the irc channel proposed I use instead of the native gnome-vfs methods, the nautilus infras. for file manipulation (to check if the source uri's parent is read only) , namely libnautilus-private/nautilus-file.h::nautilus_file_get_existing and libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info Now my question is, should I get a new patch in the same a approach of the previous one (which actually followed another patch approach, from the file ownership bug) but with the this time cache enabled functions of nautilus-file.h, will this be accepted by the upstream maintainers? I would hate to start work on it, just to realize I need to re-do it again. Many thanks, and apologies for the spam :) Sivan On Wed, 2006-05-31 at 14:20 +0300, Sivan Green wrote: > Hi List! > > As I have been experiencing this bug for quite some time long, and been > bitched my converts that this is such a minimal thing for an "OS" to > know to do, I have decided to write a patch for it myself. > > My patch basically adds another check before deciding on a "move" > operation, in a similar way to what [1] is already doing, and as such, > [1] must be applied before [2] can be applied to achieve the fix. > > This is already scheduled for dapper-updates, but I would love to see it > fixed upstream as well, for benefit of other distros who have reported > this issue. (has also bee spotted in Fedora) > > Many Thanks! > > Cheers, > > Sivan > > [1]: http://bugzilla.gnome.org/attachment.cgi?id=63939&action=view > [2]: http://bugzilla.gnome.org/attachment.cgi?id=66519 From promac@gmail.com Thu Jun 8 22:12:37 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 00AED3B0108 for ; Thu, 8 Jun 2006 22:12:37 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20139-03 for ; Thu, 8 Jun 2006 22:12:36 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.200]) by menubar.gnome.org (Postfix) with ESMTP id 3902E3B0118 for ; Thu, 8 Jun 2006 22:12:35 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so556444wxd for ; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k8WPqufouETdhytWFOCSGqDBX6Uww6u/gx9GEiZfqGDansyu/0GfgVJyWff6v5Bes6Maf8ZS2LgMrkJjT8mpXVazDoz6ic2fs6ad7faacc72ctSOSMCMi0jOeU6u9dS8t246PH01NSDAEkqr+nztxZGQI1j/y8aqMs+P7Y/+/5Y= Received: by 10.70.36.1 with SMTP id j1mr2903510wxj; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Thu, 8 Jun 2006 19:12:34 -0700 (PDT) Message-ID: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Date: Thu, 8 Jun 2006 23:12:34 -0300 From: "Paulo Cavalcanti" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19117_24627930.1149819154508" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.588 tagged_above=-999 required=2 tests=[AWL=-0.340, BAYES_00=-2.599, HTML_10_20=1.351, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -1.588 X-Spam-Level: Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 02:12:37 -0000 ------=_Part_19117_24627930.1149819154508 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. ------=_Part_19117_24627930.1149819154508 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi,

I am having a problem with nautilus 2.10 from fedora 4.
Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When
I try to close the gnome session it hangs and I have to kill  X.

Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed.

Any suggestion would be greatly appriciated.

Thanks,

/Paulo Roma. ------=_Part_19117_24627930.1149819154508-- From nshmyrev@yandex.ru Fri Jun 9 01:48:25 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 740903B009A for ; Fri, 9 Jun 2006 01:48:25 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30793-01 for ; Fri, 9 Jun 2006 01:48:24 -0400 (EDT) Received: from tzec.mtu.ru (tzec.mtu.ru [195.34.34.228]) by menubar.gnome.org (Postfix) with ESMTP id DF3BF3B0014 for ; Fri, 9 Jun 2006 01:48:21 -0400 (EDT) Received: from gnome.local (ppp83-237-205-132.pppoe.mtu-net.ru [83.237.205.132]) by smtp.MTU.RU (Postfix) with ESMTP id 453E4488309; Fri, 9 Jun 2006 09:48:19 +0400 (MSD) (envelope-from nshmyrev@yandex.ru) From: "Nickolay V. Shmyrev" To: Paulo Cavalcanti In-Reply-To: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Date: Fri, 09 Jun 2006 09:48:27 +0400 Message-Id: <1149832107.2245.28.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.797 tagged_above=-999 required=2 tests=[AWL=-0.402, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.797 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 05:48:25 -0000 Ð’ Чтв, 08/06/2006 в 23:12 -0300, Paulo Cavalcanti пишет: > Hi, > > I am having a problem with nautilus 2.10 from fedora 4. > Since yesterday, it does not put any icon on the desktop, although it > is running. It is also using more than 95% of the CPU. When > I try to close the gnome session it hangs and I have to kill X. > > Everything else seems to be normal. I can login in kde with no problem > at all. I rebooted the computer many times and nothing has changed. > > Any suggestion would be greatly appriciated. > Without additional information it's hard to say what is going on. First of all, check xsession-error in /tmp if something is dumped to error log. Then try to run nautilus or gnome-session under strace and find the place where it hangs. You can try to debug it: with gdb you should login from console, attach to the nautilus with gdb --pid= and collect backtrace with "thread apply all bt" command. You need to install debug packages installed. From promac@gmail.com Fri Jun 9 05:58:16 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F0973B01CA for ; Fri, 9 Jun 2006 05:58:16 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13186-06 for ; Fri, 9 Jun 2006 05:58:15 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.192]) by menubar.gnome.org (Postfix) with ESMTP id B48E83B0770 for ; Fri, 9 Jun 2006 05:58:14 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so608500wxd for ; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mSed73zFvOJhdPHW9Yif+JRsWWePYb71KV3h3JbLoqieOWg+6Yppc95cWmUhw/d6gYdkEbxdgjXfPvh2Whim2HdNbRldY66mxmxKSYjrhQxGDzH6CThqyjhX0xhsPIHyr0JHiMJ7sCuR3o9gOYX55imhIyCq5ToVEXUKVKMdroE= Received: by 10.70.100.17 with SMTP id x17mr3293949wxb; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Fri, 9 Jun 2006 02:58:13 -0700 (PDT) Message-ID: <68720af30606090258r5658e239ga508c46495cf877b@mail.gmail.com> Date: Fri, 9 Jun 2006 06:58:14 -0300 From: "Paulo Cavalcanti" To: "Nickolay V. Shmyrev" In-Reply-To: <1149832107.2245.28.camel@gnome.local> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22870_26670651.1149847094006" References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> <1149832107.2245.28.camel@gnome.local> X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.842 tagged_above=-999 required=2 tests=[AWL=0.533, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.842 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 09:58:16 -0000 ------=_Part_22870_26670651.1149847094006 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5CgpJIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dpbmcgYW5k IGZvdW5kIHRoZSBwcm9ibGVtLgpJIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQgd2FzIGNhdXNl ZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZQpJJ3ZlIG1hZGUgaW4gZ3N0cmVhbWVyLTAuMTAu Cgpnc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1w bHVnaW5zLWJhc2UtMC4xMC43LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1kZXZl bC0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG0KZ3N0cmVhbWVyLXRvb2xzLTAuMTAuNi4yLTAu Z3N0LjEuNC5pMzg2LnJwbQpnc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLWRldmVsLTAuMTAuNy4y LTAuZ3N0LjEuNC5pMzg2LnJwbQoKSSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVs ZWFzZSBhbmQgbmF1dGlsdXMgaXMgc3RhcnRpbmcgYWdhaW4uCldoeSB3b3VsZCBuYXV0aWx1cyBk ZXBlbmQgb24gdGhpcyBjcmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3IKcmh5dGhtYm94LTAu OS4gImxkZCAvdXNyL2Jpbi9uYXV0aWx1cyIgZG9lcyBub3Qgc2hvdyBhbnkgZGVwZW5kZW5jeS4K CldoYXQgcGFydCBvZiBnbm9tZSBkb2VzIHVzZSBpdD8KClRoYW5rIHlvdSwgdmVyeSBtdWNoLgoK L1BhdWxvIFJvbWEuCgpPbiA2LzkvMDYsIE5pY2tvbGF5IFYuIFNobXlyZXYgPG5zaG15cmV2QHlh bmRleC5ydT4gd3JvdGU6Cj4KPiD3IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVs byBDYXZhbGNhbnRpINDJ28XUOgo+ID4gSGksCj4gPgo+ID4gSSBhbSBoYXZpbmcgYSBwcm9ibGVt IHdpdGggbmF1dGlsdXMgMi4xMCBmcm9tIGZlZG9yYSA0Lgo+ID4gU2luY2UgeWVzdGVyZGF5LCBp dCBkb2VzIG5vdCBwdXQgYW55IGljb24gb24gdGhlIGRlc2t0b3AsIGFsdGhvdWdoIGl0Cj4gPiBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo+ID4gSSB0cnkgdG8gY2xvc2UgdGhlIGdub21lIHNlc3Npb24gaXQgaGFuZ3MgYW5kIEkgaGF2 ZSB0byBraWxsICBYLgo+ID4KPiA+IEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBiZSBub3JtYWwu IEkgY2FuIGxvZ2luIGluIGtkZSB3aXRoIG5vIHByb2JsZW0KPiA+IGF0IGFsbC4gSSByZWJvb3Rl ZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQgbm90aGluZyBoYXMgY2hhbmdlZC4KPiA+Cj4g PiBBbnkgc3VnZ2VzdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLgo+ID4KPiBXaXRo b3V0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXQncyBoYXJkIHRvIHNheSB3aGF0IGlzIGdvaW5n IG9uLiBGaXJzdAo+IG9mIGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21l dGhpbmcgaXMgZHVtcGVkIHRvIGVycm9yCj4gbG9nLiBUaGVuIHRyeSB0byBydW4gbmF1dGlsdXMg b3IgZ25vbWUtc2Vzc2lvbiB1bmRlciBzdHJhY2UgYW5kIGZpbmQgdGhlCj4gcGxhY2Ugd2hlcmUg aXQgaGFuZ3MuCj4KPiBZb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDoKPgo+IHdpdGggZ2RiIHlvdSBz aG91bGQgbG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGgKPgo+ IGdkYiAtLXBpZD08bmF1dGlsdXNfcGlkPgo+Cj4gYW5kIGNvbGxlY3QgYmFja3RyYWNlIHdpdGgg InRocmVhZCBhcHBseSBhbGwgYnQiIGNvbW1hbmQuIFlvdSBuZWVkIHRvCj4gaW5zdGFsbCBkZWJ1 ZyBwYWNrYWdlcyBpbnN0YWxsZWQuCj4KPgo+Cg== ------=_Part_22870_26670651.1149847094006 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5PGJyPjxicj5JIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dp bmcgYW5kIGZvdW5kIHRoZSBwcm9ibGVtLjxicj5JIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQg d2FzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZTxicj5JJ3ZlIG1hZGUgaW4gZ3N0 cmVhbWVyLTAuMTAuPGJyPjxicj5nc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYu cnBtCjxicj5nc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLTAuMTAuNy4yLTAuZ3N0LjEuNC5pMzg2 LnJwbTxicj5nc3RyZWFtZXIwMTAtZGV2ZWwtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtPGJy PmdzdHJlYW1lci10b29scy0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG08YnI+Z3N0cmVhbWVy MDEwLXBsdWdpbnMtYmFzZS1kZXZlbC0wLjEwLjcuMi0wLmdzdC4xLjQuaTM4Ni5ycG0gPGJyPgo8 YnI+SSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVsZWFzZSBhbmQgbmF1dGlsdXMg aXMgc3RhcnRpbmcgYWdhaW4uPGJyPldoeSB3b3VsZCBuYXV0aWx1cyBkZXBlbmQgb24gdGhpcyBj cmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3I8YnI+cmh5dGhtYm94LTAuOS4gJnF1b3Q7bGRk IC91c3IvYmluL25hdXRpbHVzJnF1b3Q7IGRvZXMgbm90IHNob3cgYW55IGRlcGVuZGVuY3kuCjxi cj48YnI+V2hhdCBwYXJ0IG9mIGdub21lIGRvZXMgdXNlIGl0Pzxicj48YnI+VGhhbmsgeW91LCB2 ZXJ5IG11Y2guPGJyPjxicj4vUGF1bG8gUm9tYS48YnI+PGJyPjxkaXY+PHNwYW4gY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA2LzkvMDYsIDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1lIj5OaWNrb2xh eSBWLiBTaG15cmV2PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm5zaG15cmV2QHlhbmRleC5ydSI+ Cm5zaG15cmV2QHlhbmRleC5ydTwvYT4mZ3Q7IHdyb3RlOjwvc3Bhbj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIw NCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij73 IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVsbyBDYXZhbGNhbnRpINDJ28XUOgo8 YnI+Jmd0OyBIaSw8YnI+Jmd0Ozxicj4mZ3Q7IEkgYW0gaGF2aW5nIGEgcHJvYmxlbSB3aXRoIG5h dXRpbHVzIDIuMTAgZnJvbSBmZWRvcmEgNC48YnI+Jmd0OyBTaW5jZSB5ZXN0ZXJkYXksIGl0IGRv ZXMgbm90IHB1dCBhbnkgaWNvbiBvbiB0aGUgZGVza3RvcCwgYWx0aG91Z2ggaXQ8YnI+Jmd0OyBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo8YnI+Jmd0OyBJIHRyeSB0byBjbG9zZSB0aGUgZ25vbWUgc2Vzc2lvbiBpdCBoYW5ncyBhbmQg SSBoYXZlIHRvIGtpbGwmbmJzcDsmbmJzcDtYLjxicj4mZ3Q7PGJyPiZndDsgRXZlcnl0aGluZyBl bHNlIHNlZW1zIHRvIGJlIG5vcm1hbC4gSSBjYW4gbG9naW4gaW4ga2RlIHdpdGggbm8gcHJvYmxl bTxicj4mZ3Q7IGF0IGFsbC4gSSByZWJvb3RlZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQg bm90aGluZyBoYXMgY2hhbmdlZC4KPGJyPiZndDs8YnI+Jmd0OyBBbnkgc3VnZ2VzdGlvbiB3b3Vs ZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLjxicj4mZ3Q7PGJyPldpdGhvdXQgYWRkaXRpb25hbCBp bmZvcm1hdGlvbiBpdCdzIGhhcmQgdG8gc2F5IHdoYXQgaXMgZ29pbmcgb24uIEZpcnN0PGJyPm9m IGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21ldGhpbmcgaXMgZHVtcGVk IHRvIGVycm9yPGJyPmxvZy4gVGhlbiB0cnkgdG8gcnVuIG5hdXRpbHVzIG9yIGdub21lLXNlc3Np b24gdW5kZXIgc3RyYWNlIGFuZCBmaW5kIHRoZQo8YnI+cGxhY2Ugd2hlcmUgaXQgaGFuZ3MuPGJy Pjxicj5Zb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDo8YnI+PGJyPndpdGggZ2RiIHlvdSBzaG91bGQg bG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGg8YnI+PGJyPmdk YiAtLXBpZD0mbHQ7bmF1dGlsdXNfcGlkJmd0Ozxicj48YnI+YW5kIGNvbGxlY3QgYmFja3RyYWNl IHdpdGggJnF1b3Q7dGhyZWFkIGFwcGx5IGFsbCBidCZxdW90OyBjb21tYW5kLiBZb3UgbmVlZCB0 bwo8YnI+aW5zdGFsbCBkZWJ1ZyBwYWNrYWdlcyBpbnN0YWxsZWQuPGJyPjxicj48YnI+PC9ibG9j a3F1b3RlPjwvZGl2Pjxicj4K ------=_Part_22870_26670651.1149847094006-- From crotalus@superig.com.br Thu Jun 8 21:35:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AD8293B05AC for ; Thu, 8 Jun 2006 21:35:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18364-01 for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: from smtpsig-4.ig.com.br (smtpsig-4.ig.com.br [200.226.132.141]) by menubar.gnome.org (Postfix) with ESMTP id 304553B02FE for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: (qmail 26488 invoked from network); 9 Jun 2006 01:35:15 -0000 Received: from 200216029049.user.veloxzone.com.br (HELO [192.168.254.2]) (Usuario_autenticado:promac@superig.com.br@[200.216.29.49]) (envelope-sender ) by smtpsig-4.ig.com.br (qmail-ldap-1.03) with SMTP for ; 9 Jun 2006 01:35:15 -0000 Message-ID: <4488D055.20009@superig.com.br> Date: Thu, 08 Jun 2006 22:35:17 -0300 From: Paulo Roma Cavalcanti Organization: UFRJ User-Agent: Thunderbird 1.5 (X11/20060119) MIME-Version: 1.0 To: nautilus-list@gnome.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=0.001 tagged_above=-999 required=2 tests=[BAYES_50=0.001] X-Spam-Score: 0.001 X-Spam-Level: X-Mailman-Approved-At: Fri, 09 Jun 2006 06:30:27 -0400 Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: roma@lcg.ufrj.br List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 01:35:23 -0000 Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. From alexl@redhat.com Fri Jun 9 10:23:21 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D9EBB3B010A for ; Fri, 9 Jun 2006 10:23:21 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30603-04 for ; Fri, 9 Jun 2006 10:23:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 219813B0393 for ; Fri, 9 Jun 2006 10:23:15 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5mso001978; Fri, 9 Jun 2006 10:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5miv011931; Fri, 9 Jun 2006 10:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5lwp005947; Fri, 9 Jun 2006 10:05:48 -0400 From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1149103242.8687.38.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1149103242.8687.38.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 09 Jun 2006 16:05:47 +0200 Message-Id: <1149861948.3023.61.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.549 tagged_above=-999 required=2 tests=[AWL=-0.025, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_BF=0.077] X-Spam-Score: -2.549 X-Spam-Level: Cc: Nautilus Subject: Re: nautilus hangs occasionnaly on a right click X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 14:23:22 -0000 On Wed, 2006-05-31 at 21:20 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Got it ! > Maybe it's the second time I send this message, but I don't find it in > my "sent" directory It looks like some sort of thread deadlock. Both the main thread and the thumbnailer thread are blocking on a libc mutex that looks like its in free(). The rest of the threads look normal, except this: Thread 11 (Thread -1213518928 (LWP 2980)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x09d05830 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb7ab11f8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () I dunno what that is. In this backtrace the thumbnailing thread was launching: "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/lf2006-04-21.aud.cafiero.34781.sbeok.flac16/lf2006-04-21audD1t01.ogg' '/tmp/.gnome_thumbnail.ObrcTQ'" to thumbnail some video. Maybe this is related. Could you repeat this whole procedure a bunch of time and send me the results. It might be possible to figure out the common attributes of the multiple backtraces. Its pretty hard to figure things out from this one only. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an otherworldly day-dreaming messiah whom everyone believes is mad. She's a scantily clad goth traffic cop who don't take no shit from nobody. They fight crime! From alexl@redhat.com Mon Jun 12 05:55:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 232653B0078 for ; Mon, 12 Jun 2006 05:55:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-02 for ; Mon, 12 Jun 2006 05:55:25 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937443B008A for ; Mon, 12 Jun 2006 05:55:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sfY0025126; Mon, 12 Jun 2006 05:54:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9satI014479; Mon, 12 Jun 2006 05:54:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sZEB015002; Mon, 12 Jun 2006 05:54:35 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1149705572.8926.8.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:54:35 +0200 Message-Id: <1150106076.3023.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:55:27 -0000 On Wed, 2006-06-07 at 21:39 +0300, Sivan Greenberg wrote: > Hi Again, the wonderful users and hacker of nautilus. > > I would like to bring your attention again to a patch I have created > originally using pure gnome_vfs functions to check if the source's > parent is read only, and if so default to a copy operation instead of a > move operation which previously caused hassle, confusing and much mess > among especially converts from other operating system, as to why "Such a > trivial operation needs to involve hassle and why do I even need to > think about it and select copy from the context menu??" etc.. ;-) > > So after realizing this patch is not good enough, due to it being inside > a callback which gets called multiple times per each DND operation, > Manny on the irc channel proposed I use instead of the native gnome-vfs > methods, the nautilus infras. for file manipulation (to check if the > source uri's parent is read only) , namely > libnautilus-private/nautilus-file.h::nautilus_file_get_existing > > and > > libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info > > Now my question is, should I get a new patch in the same a approach of > the previous one (which actually followed another patch approach, from > the file ownership bug) but with the this time cache enabled functions > of nautilus-file.h, will this be accepted by the upstream maintainers? > > I would hate to start work on it, just to realize I need to re-do it > again. > > Many thanks, and apologies for the spam :) This is tricky stuff. In general we try to avoid sync i/o in Nautilus, but its very complicated to do in the case of dnd where we really need a sync reply immediately or the ui looks weird (we don't immediately show the right cursor and you might have to wiggle the mouse to get it to change even). Another complication is that doing generic gnome-vfs i/o can cause authentication dialogs to pop up, which is bad during dnd. So, I think the best workaround is to continue using sync i/o in this case. But lets try minimizing it. So, only do this magic for local files (i.e. file: uris), stat as few times as possible and cache i/o results. So, the two patches in your mail need to be combined into one should_convert_move_to_copy() function that does at most one stat of the target and one of the source. Furthermore, we should cache the results of this function for the last target/source pair, which I think can be done by using user-data on the drag context. Does that sound good? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad sweet-toothed dwarf gone bad. She's a wealthy hip-hop hooker living homeless in New York's sewers. They fight crime! From alexl@redhat.com Mon Jun 12 05:56:54 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F4993B00A7 for ; Mon, 12 Jun 2006 05:56:54 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-03 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A5AC63B00A6 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMJV025635; Mon, 12 Jun 2006 05:56:22 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMGU014838; Mon, 12 Jun 2006 05:56:22 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uLdp015128; Mon, 12 Jun 2006 05:56:22 -0400 From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1149109286.3625.89.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:56:22 +0200 Message-Id: <1150106182.3023.107.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:56:54 -0000 On Wed, 2006-05-31 at 16:01 -0500, Federico Mena Quintero wrote: > Hi, > > I finally found the reason why volume icons overlap in the desktop > (http://bugzilla.gnome.org/show_bug.cgi?id=330298) > > finish_adding_new_icons() was ignoring all lazily-positioned icons when > filling up the PlacemenGrid. This caused the overlaps. The fix is to > make icon_set_position() turn off that flag in the icon. > > Also, once a lazily-positioned icon was moved to avoid overlaps, we > weren't emitting icon_position_changed so that the higher-level code > would save the new position metadata. This caused potential overlaps > when restarting Nautilus. > > Is this OK to commit? > > [This needs a little change to apply to Manny's latest version of > nautilus-icon-container.c, which doesn't have separate scaling values > for x/y, but that's a trivial change I'll make when applying the patch.] I thought this bug was fixed already? Manny, whats your opinion on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding overambitious jungle king with a winning smile and a way with the ladies. She's a plucky hypochondriac wrestler looking for love in all the wrong places. They fight crime! From alexl@redhat.com Mon Jun 12 05:58:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 439223B00A6 for ; Mon, 12 Jun 2006 05:58:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29028-05 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 99BAF3B00D8 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5O0026237; Mon, 12 Jun 2006 05:58:05 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5oH015029; Mon, 12 Jun 2006 05:58:05 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w4Lp015176; Mon, 12 Jun 2006 05:58:05 -0400 From: Alexander Larsson To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:58:04 +0200 Message-Id: <1150106285.3023.109.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:58:34 -0000 On Fri, 2006-06-02 at 10:49 +0100, James Pharaoh wrote: > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. We used to look for a ".directory" file in each directory that let you set both icon and name for the directory (the file used was a desktop file). However, looking for an extra file each time we look at a directory was a significant performance problem, so this was removed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly small-town matador on a mission from God. She's a high-kicking African-American stripper with her own daytime radio talk show. They fight crime! From alexl@redhat.com Mon Jun 12 06:03:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 47A983B008A; Mon, 12 Jun 2006 06:03:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29048-09; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937FE3B0083; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IEV027487; Mon, 12 Jun 2006 06:02:18 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IBT015943; Mon, 12 Jun 2006 06:02:18 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2G6h015653; Mon, 12 Jun 2006 06:02:17 -0400 From: Alexander Larsson To: Xavier Claessens In-Reply-To: <1149501410.7231.27.camel@zdra-desktop> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> <1149501410.7231.27.camel@zdra-desktop> Content-Type: text/plain Date: Mon, 12 Jun 2006 12:02:16 +0200 Message-Id: <1150106537.3023.112.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: Christian Neumair , Vincent Untz , "nautilus-list@gnome.org" , Mark McLoughlin Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 10:03:01 -0000 On Mon, 2006-06-05 at 11:56 +0200, Xavier Claessens wrote: > So what I propose is adding some objects to libnautilus-private to have > a common way handling Drive and Volume files. In the same way of > nautilus_destkop_* we can make something like nautilus_volume_file and > nautilus_drive_file which would be used to computer:///, > x-nautilus-desktop:///,etc. > > On this objects we can have methods like > > gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); > > to replace the eject_for_type(). And > > void nautilus_volume_file_get_options (NautilusDriveFile*, > gboolean *show_mount, > gboolean *show_unmount, > gboolean *show_eject, > gboolean *show_format); > > To know which options we can show for this file. > > I don't know exactly how all that can work and if that's a good idea but > I can work on it this summer. I'll experiment some patches as soon as my > exams finishes. > > I would be happy to have comments on this. I'm not sure we really need a new object type for this (since there are full-blown objects for volume and drive already this will just cause pain). However, moving these functions into one shared place in libnautilus-private and generalizing them as best we can sounds like a good plan. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a maverick overambitious filmmaker with a robot buddy named Sparky. She's a wealthy communist doctor from a family of eight older brothers. They fight crime! From sivan@ubuntu.com Tue Jun 13 06:01:08 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9334F3B000C for ; Tue, 13 Jun 2006 06:01:08 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18979-03 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8D3323B00C9 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from bzq-84-108-224-64.cablep.bezeqint.net (bzq-84-108-224-64.cablep.bezeqint.net [84.108.224.64]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8778C1053A; Tue, 13 Jun 2006 11:59:56 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150106076.3023.105.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Tue, 13 Jun 2006 12:59:56 +0300 Message-Id: <1150192797.6544.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.417 tagged_above=-999 required=2 tests=[AWL=0.047, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.417 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 10:01:08 -0000 On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > Another complication is that doing generic gnome-vfs i/o can cause > authentication dialogs to pop up, which is bad during dnd. If it occurs during after a remote sessions has been dropped and the target window is till on, I can't see why it can create a problem. (I believe Win32 based platforms follow this approach as well) > So, the two patches in your mail need to be combined into one > should_convert_move_to_copy() function that does at most one stat of the > target and one of the source. Furthermore, we should cache the results > of this function for the last target/source pair, which I think can be > done by using user-data on the drag context. Some question: * The user ownership patch was not created by me, I think it's taken from nautilus's CVS ;-) * Wouldn't it be easier and more readable to use nautilus own already cache enabled file permissoin and access functions ? (as in libnautilus-private/nautilus-file.h, Manny noted to me these are cache enabled) Cheers, Sivan From alexl@redhat.com Tue Jun 13 07:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D0B863B000A for ; Tue, 13 Jun 2006 07:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20874-04 for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9B2343B000C for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOH0b003764; Tue, 13 Jun 2006 06:24:17 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOHxZ029012; Tue, 13 Jun 2006 06:24:17 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOGuB003508; Tue, 13 Jun 2006 06:24:16 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150192797.6544.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> Content-Type: text/plain Date: Tue, 13 Jun 2006 12:24:14 +0200 Message-Id: <1150194254.3023.167.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:13:45 -0000 On Tue, 2006-06-13 at 12:59 +0300, Sivan Greenberg wrote: > On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > > > Another complication is that doing generic gnome-vfs i/o can cause > > authentication dialogs to pop up, which is bad during dnd. > > If it occurs during after a remote sessions has been dropped and the > target window is till on, I can't see why it can create a problem. (I > believe Win32 based platforms follow this approach as well) If you do i/o while the drag is happening you'll get the dialog while you're dragging. This is bad in itself, for instance you can't type or click on it without releasing the drag, and then there are potential risks for stuck pointer grabs with modal dialogs. > > So, the two patches in your mail need to be combined into one > > should_convert_move_to_copy() function that does at most one stat of the > > target and one of the source. Furthermore, we should cache the results > > of this function for the last target/source pair, which I think can be > > done by using user-data on the drag context. > > Some question: > > * The user ownership patch was not created by me, I think it's taken > from nautilus's CVS ;-) So? Just change it. :) > * Wouldn't it be easier and more readable to use nautilus own already > cache enabled file permissoin and access functions ? (as in > libnautilus-private/nautilus-file.h, Manny noted to me these are cache > enabled) NautilusFile is the nautilus async machinery. Take a look at for instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some details how it works. You can't really use this in a sync way (except if you're lucky and the info was already cached). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted voodoo paramedic haunted by an iconic dead American confidante She's a radical red-headed femme fatale with an evil twin sister. They fight crime! From federico@ximian.com Tue Jun 13 12:03:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 736FB3B00DB for ; Tue, 13 Jun 2006 12:03:41 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29142-07 for ; Tue, 13 Jun 2006 12:03:39 -0400 (EDT) Received: from peabody.ximian.com (peabody.ximian.com [130.57.169.10]) by menubar.gnome.org (Postfix) with ESMTP id F40593B0071 for ; Tue, 13 Jun 2006 12:03:38 -0400 (EDT) Received: (qmail 22918 invoked from network); 13 Jun 2006 15:55:54 -0000 Received: from localhost (HELO 164-99-120-90.boston.ximian.com) (127.0.0.1) by localhost with SMTP; 13 Jun 2006 15:55:54 -0000 From: Federico Mena Quintero To: Alexander Larsson In-Reply-To: <1150106182.3023.107.camel@greebo> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> Content-Type: text/plain Date: Tue, 13 Jun 2006 10:51:33 -0500 Message-Id: <1150213894.17566.105.camel@cacharro.xalalinux.org> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.574 tagged_above=-999 required=2 tests=[AWL=0.025, BAYES_00=-2.599] X-Spam-Score: -2.574 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 16:03:41 -0000 On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > I thought this bug was fixed already? > Manny, whats your opinion on this? I believe Manny's patches were about fine-tuning the placement grid and positioning in general. My patch is about maintaining the right metadata for icons by emitting the signal as appropriate, and about really maintaining the position of icons which were lazily placed. Federico From sivan@ubuntu.com Tue Jun 13 18:40:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0FA973B00C9 for ; Tue, 13 Jun 2006 18:40:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08820-08 for ; Tue, 13 Jun 2006 18:40:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 015523B000E for ; Tue, 13 Jun 2006 18:40:30 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id DB37F4509; Wed, 14 Jun 2006 00:39:17 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150194254.3023.167.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 01:39:21 +0300 Message-Id: <1150238361.5853.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 22:40:34 -0000 On Tue, 2006-06-13 at 12:24 +0200, Alexander Larsson wrote: > NautilusFile is the nautilus async machinery. Take a look at for > instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some > details how it works. You can't really use this in a sync way (except if > you're lucky and the info was already cached). > Cool, so should I just aim to use stock sync and cached up file access functions from gnome-vfs ? (I understand from that you are suggesting to refrain from using the sync func of nautilus-io) Sivan From alexl@redhat.com Wed Jun 14 03:06:36 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8E1163B0014 for ; Wed, 14 Jun 2006 03:06:36 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20144-09 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2B58E3B0004 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75miD013721; Wed, 14 Jun 2006 03:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75mMR009753; Wed, 14 Jun 2006 03:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75l1O019900; Wed, 14 Jun 2006 03:05:48 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150238361.5853.0.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 09:05:47 +0200 Message-Id: <1150268748.3023.170.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 07:06:36 -0000 On Wed, 2006-06-14 at 01:39 +0300, Sivan Greenberg wrote: > > Cool, so should I just aim to use stock sync and cached up file access > functions from gnome-vfs ? (I understand from that you are suggesting > to > refrain from using the sync func of nautilus-io) You might as well use g_stat() if you're working on local files only. Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also an automatic check for local files, since it returns NULL for other uris.) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal pirate barbarian with a robot buddy named Sparky. She's a manipulative bisexual college professor from a different time and place. They fight crime! From sivan@ubuntu.com Wed Jun 14 05:35:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 16DF43B04FC for ; Wed, 14 Jun 2006 05:35:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26784-02 for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8457E3B053D for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id E28F629CD05; Wed, 14 Jun 2006 11:34:00 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150268748.3023.170.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 12:34:06 +0300 Message-Id: <1150277646.6568.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:35:24 -0000 On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > You might as well use g_stat() if you're working on local files only. > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > an automatic check for local files, since it returns NULL for other > uris.) I hope it's going to be easy as it seems ;-). On a related note, why are g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , (gnome_vfs_get_file_info_uri()) Sivan From alexl@redhat.com Wed Jun 14 05:47:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id F0D593B040E for ; Wed, 14 Jun 2006 05:47:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27324-08 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 83C2E3B04B3 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9keHl002050; Wed, 14 Jun 2006 05:46:40 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kZtw005095; Wed, 14 Jun 2006 05:46:35 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kYt0002077; Wed, 14 Jun 2006 05:46:34 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150277646.6568.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 11:46:34 +0200 Message-Id: <1150278394.26621.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:47:32 -0000 On Wed, 2006-06-14 at 12:34 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > > > You might as well use g_stat() if you're working on local files only. > > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > > an automatic check for local files, since it returns NULL for other > > uris.) > > I hope it's going to be easy as it seems ;-). On a related note, why are > g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones > I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , > (gnome_vfs_get_file_info_uri()) They are not cached. You have to implement that yourself. The reason to use g_stat directly is just to avoid lots of levels of indirection and bloat when its not needed (i.e. you're only doing this for local files anyway). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding one-eyed jungle king on his last day in the job. She's a man-hating goth mercenary who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From sivan@ubuntu.com Wed Jun 14 09:28:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 748873B029B for ; Wed, 14 Jun 2006 09:28:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15163-07 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 29D2E3B0119 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from [192.168.2.101] (87.69.31.132.cable.012.net.il [87.69.31.132]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BB0CC2A6BFD; Wed, 14 Jun 2006 15:27:18 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 16:26:56 +0300 Message-Id: <1150291617.5322.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 13:28:07 -0000 On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf@free.fr Wed Jun 14 15:43:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 870EF3B000E for ; Wed, 14 Jun 2006 15:43:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04192-03 for ; Wed, 14 Jun 2006 15:43:40 -0400 (EDT) Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by menubar.gnome.org (Postfix) with ESMTP id 6A4B33B0102 for ; Wed, 14 Jun 2006 15:43:39 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp1-g19.free.fr (Postfix) with ESMTP id 7F91C9AE0E; Wed, 14 Jun 2006 21:43:08 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Content-Type: multipart/mixed; boundary="=-6ha9yoI4TiErFtbzzRYq" Date: Wed, 14 Jun 2006 21:43:02 +0200 Message-Id: <1150314184.8687.75.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.511 tagged_above=-999 required=2 tests=[AWL=-0.066, BAYES_00=-2.599, TW_BF=0.077, TW_XB=0.077] X-Spam-Score: -2.511 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 19:43:44 -0000 --=-6ha9yoI4TiErFtbzzRYq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick --=-6ha9yoI4TiErFtbzzRYq Content-Disposition: attachment; filename=nautilushang2 Content-Type: text/plain; name=nautilushang2; charset=utf-8 Content-Transfer-Encoding: 7bit [pjacquot@neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot@neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) --=-6ha9yoI4TiErFtbzzRYq-- From alexl@redhat.com Thu Jun 15 03:31:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2922C3B002B for ; Thu, 15 Jun 2006 03:31:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19338-08 for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 96E493B00FE for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJGA017396; Thu, 15 Jun 2006 03:31:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJPR008545; Thu, 15 Jun 2006 03:31:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VIdM006092; Thu, 15 Jun 2006 03:31:18 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Thu, 15 Jun 2006 09:31:16 +0200 Message-Id: <1150356676.26621.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:31:24 -0000 On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application@ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Thu Jun 15 03:32:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 08A5B3B0126 for ; Thu, 15 Jun 2006 03:32:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19413-06 for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 8B3E63B002B for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WfUL017815; Thu, 15 Jun 2006 03:32:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7Wa1T008783; Thu, 15 Jun 2006 03:32:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WZ5W006145; Thu, 15 Jun 2006 03:32:36 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Content-Type: text/plain Date: Thu, 15 Jun 2006 09:32:35 +0200 Message-Id: <1150356755.26621.8.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:32:58 -0000 On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot@anpe.fr Thu Jun 15 04:17:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DED9A3B0298 for ; Thu, 15 Jun 2006 04:17:30 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22167-05 for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from smtp3.lc.anpe.fr (smtp3.lc.anpe.fr [80.118.163.18]) by menubar.gnome.org (Postfix) with ESMTP id 45FFD3B00FE for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from HOMERE02.anpe.fr (localhost.localdomain [127.0.0.1]) by smtp3.lc.anpe.fr (antivirus) with ESMTP id 9498573CB7; Thu, 15 Jun 2006 10:17:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE02.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 15 Jun 2006 10:15:57 +0200 Message-ID: <44911757.6070100@anpe.fr> Date: Thu, 15 Jun 2006 10:16:23 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> In-Reply-To: <1150356676.26621.5.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 15 Jun 2006 08:15:57.0655 (UTC) FILETIME=[EE03CE70:01C69053] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:17:31 -0000 Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application@ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl@redhat.com Thu Jun 15 04:31:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4597A3B045B for ; Thu, 15 Jun 2006 04:31:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22773-09 for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F8DD3B045A for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8Vl3p004055; Thu, 15 Jun 2006 04:31:47 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VlIQ020296; Thu, 15 Jun 2006 04:31:47 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VkBA014758; Thu, 15 Jun 2006 04:31:47 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Content-Type: text/plain Date: Thu, 15 Jun 2006 10:31:46 +0200 Message-Id: <1150360307.26621.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:31:58 -0000 On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan@ubuntu.com Thu Jun 15 04:36:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C31D23B0155 for ; Thu, 15 Jun 2006 04:36:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23178-08 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 5EC753B00F7 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from [192.168.1.222] (89.0.59.223.dynamic.barak-online.net [89.0.59.223]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 1F8982A6C13; Thu, 15 Jun 2006 10:36:22 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Thu, 15 Jun 2006 11:36:22 +0300 Message-Id: <1150360583.5504.4.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:36:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel@embl.fr Thu Jun 15 07:58:30 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE6BA3B041F for ; Thu, 15 Jun 2006 07:58:29 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04112-09 for ; Thu, 15 Jun 2006 07:58:26 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CD7493B04B1 for ; Thu, 15 Jun 2006 07:58:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FBwNm20535; Thu, 15 Jun 2006 13:58:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp020384; Thu Jun 15 13:58:01 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 68FD93A009C; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 5D65A3A008B; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Message-ID: <44914B5C.8040003@embl.fr> Date: Thu, 15 Jun 2006 13:58:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: nautilus-list@gnome.org References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> In-Reply-To: <1146067801.621.43.camel@greebo> Content-Type: multipart/mixed; boundary=------------030804040701090309040506 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.47 tagged_above=-999 required=2 tests=[AWL=-0.007, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.47 X-Spam-Level: Cc: grumz@grumz.net X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 11:58:30 -0000 This is a multi-part message in MIME format. --------------030804040701090309040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > --------------030804040701090309040506 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030804040701090309040506-- From ruaudel@embl.fr Thu Jun 15 08:30:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9028C3B0445 for ; Thu, 15 Jun 2006 08:30:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06870-02 for ; Thu, 15 Jun 2006 08:30:00 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 9B2383B042C for ; Thu, 15 Jun 2006 08:29:59 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FCTl110148; Thu, 15 Jun 2006 14:29:47 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp008288; Thu Jun 15 14:26:19 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 0C35E3A009C; Thu, 15 Jun 2006 14:25:32 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid E9DC23A008B; Thu, 15 Jun 2006 14:25:31 +0200 (CEST) Message-ID: <449151FE.2070906@embl.fr> Date: Thu, 15 Jun 2006 14:26:38 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> In-Reply-To: <44914B5C.8040003@embl.fr> Content-Type: multipart/mixed; boundary=------------040407040200090207040807 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:30.64249 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.536 tagged_above=-999 required=2 tests=[AWL=0.062, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.536 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 12:30:02 -0000 This is a multi-part message in MIME format. --------------040407040200090207040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Frédéric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl@redhat.com alla@lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > --------------040407040200090207040807 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------040407040200090207040807-- From patrick.jacquotf@free.fr Thu Jun 15 13:36:49 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5A7663B0397 for ; Thu, 15 Jun 2006 13:36:49 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25173-04 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 538763B0311 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 6676E4444D; Thu, 15 Jun 2006 19:34:32 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Content-Type: text/plain; charset=utf-8 Date: Thu, 15 Jun 2006 19:34:26 +0200 Message-Id: <1150392867.8687.79.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.585 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599] X-Spam-Score: -2.585 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 17:36:49 -0000 Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl@redhat.com Fri Jun 16 03:13:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA2653B002C for ; Fri, 16 Jun 2006 03:13:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20384-08 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A6B853B0011 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8Y3006797; Fri, 16 Jun 2006 02:45:08 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8bO013639; Fri, 16 Jun 2006 02:45:08 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j6oC001946; Fri, 16 Jun 2006 02:45:07 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 08:45:06 +0200 Message-Id: <1150440307.26621.41.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 07:13:58 -0000 On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan@ubuntu.com Fri Jun 16 04:03:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21E6E3B0076 for ; Fri, 16 Jun 2006 04:03:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21280-09 for ; Fri, 16 Jun 2006 04:03:28 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id E8EC33B0011 for ; Fri, 16 Jun 2006 04:03:27 -0400 (EDT) Received: from badtemperrodent.net (badtemperrodent.net [192.117.110.191]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8CFB82A6BFF; Fri, 16 Jun 2006 09:41:56 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Fri, 16 Jun 2006 10:39:05 +0300 Message-Id: <1150443545.5513.18.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:03:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl@redhat.com Fri Jun 16 04:16:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7A853B002C for ; Fri, 16 Jun 2006 04:16:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22202-08 for ; Fri, 16 Jun 2006 04:16:00 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F40B13B006C for ; Fri, 16 Jun 2006 04:15:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F9j6000439; Fri, 16 Jun 2006 04:15:09 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F46p028945; Fri, 16 Jun 2006 04:15:04 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F3cm012357; Fri, 16 Jun 2006 04:15:03 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:15:03 +0200 Message-Id: <1150445703.26621.60.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:16:01 -0000 On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl@redhat.com Fri Jun 16 04:41:12 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 557D03B0011 for ; Fri, 16 Jun 2006 04:41:12 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22567-09 for ; Fri, 16 Jun 2006 04:41:11 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id CFBBB3B0007 for ; Fri, 16 Jun 2006 04:41:10 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8Za55006178; Fri, 16 Jun 2006 04:35:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZV2m032257; Fri, 16 Jun 2006 04:35:31 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZUux013456; Fri, 16 Jun 2006 04:35:30 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: Frederic Ruaudel In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:35:30 +0200 Message-Id: <1150446930.26621.70.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:41:12 -0000 On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin@xs4all.nl Fri Jun 16 05:04:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 98D7C3B002C for ; Fri, 16 Jun 2006 05:04:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23115-09 for ; Fri, 16 Jun 2006 05:04:27 -0400 (EDT) Received: from smtp-vbr11.xs4all.nl (smtp-vbr11.xs4all.nl [194.109.24.31]) by menubar.gnome.org (Postfix) with ESMTP id C07BF3B0007 for ; Fri, 16 Jun 2006 05:04:26 -0400 (EDT) Received: from [172.16.0.167] (a82-94-101-162.adsl.xs4all.nl [82.94.101.162]) (authenticated bits=0) by smtp-vbr11.xs4all.nl (8.13.6/8.13.6) with ESMTP id k5G93fN8053607 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Fri, 16 Jun 2006 11:03:41 +0200 (CEST) (envelope-from rubin@xs4all.nl) Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Rubin To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 16 Jun 2006 11:03:41 +0200 Message-Id: <1150448621.29988.7.camel@thinkpad> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 16 Jun 2006 05:24:20 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:04:28 -0000 Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when replying to this! Thanks! Rubin. From alexl@redhat.com Fri Jun 16 05:55:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id A4FE73B000B for ; Fri, 16 Jun 2006 05:55:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24488-05 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 411CE3B0012 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXBo031898; Fri, 16 Jun 2006 05:54:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXTM013747; Fri, 16 Jun 2006 05:54:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sW3W017065; Fri, 16 Jun 2006 05:54:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 11:54:32 +0200 Message-Id: <1150451672.26621.77.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:55:38 -0000 On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl@redhat.com Fri Jun 16 08:13:04 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21C553B006C for ; Fri, 16 Jun 2006 08:13:04 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27898-03 for ; Fri, 16 Jun 2006 08:13:03 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DC1763B002C for ; Fri, 16 Jun 2006 08:13:02 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCPrp006369; Fri, 16 Jun 2006 08:12:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCKTB004736; Fri, 16 Jun 2006 08:12:20 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCJn6025533; Fri, 16 Jun 2006 08:12:20 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Content-Type: text/plain Date: Fri, 16 Jun 2006 14:12:19 +0200 Message-Id: <1150459940.26621.88.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:13:04 -0000 On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:27:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 064A53B0011 for ; Fri, 16 Jun 2006 08:27:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28295-08 for ; Fri, 16 Jun 2006 08:27:55 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CB2B33B002C for ; Fri, 16 Jun 2006 08:27:54 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCR3Z13371; Fri, 16 Jun 2006 14:27:03 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp013140; Fri Jun 16 14:26:43 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id B41023A009C; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid A52D83A008B; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Message-ID: <4492A396.6040708@embl.fr> Date: Fri, 16 Jun 2006 14:27:02 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> In-Reply-To: <1150460132.26621.91.camel@greebo> Content-Type: multipart/mixed; boundary=------------090102050009040200050407 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:93.88275 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.474 tagged_above=-999 required=2 tests=[AWL=-0.011, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.474 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:27:57 -0000 This is a multi-part message in MIME format. --------------090102050009040200050407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? --------------090102050009040200050407 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090102050009040200050407-- From alexl@redhat.com Fri Jun 16 08:36:45 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8EEAD3B00A2 for ; Fri, 16 Jun 2006 08:36:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28772-01 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 3F2483B0076 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCa32c012746; Fri, 16 Jun 2006 08:36:03 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZwoG008648; Fri, 16 Jun 2006 08:35:58 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZvod026619; Fri, 16 Jun 2006 08:35:58 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:35:57 +0200 Message-Id: <1150461357.26621.94.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:36:45 -0000 On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Frédéric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:41:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE0873B0007 for ; Fri, 16 Jun 2006 08:41:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28628-04 for ; Fri, 16 Jun 2006 08:41:37 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 728BA3B0076 for ; Fri, 16 Jun 2006 08:41:35 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCebu21324; Fri, 16 Jun 2006 14:40:37 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021209; Fri Jun 16 14:40:26 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 6113F3A009C; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 569F63A008B; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Message-ID: <4492A6CE.1040904@embl.fr> Date: Fri, 16 Jun 2006 14:40:46 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> In-Reply-To: <1150461357.26621.94.camel@greebo> Content-Type: multipart/mixed; boundary=------------020601000705080507000607 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.542 tagged_above=-999 required=2 tests=[AWL=0.056, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.542 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:41:39 -0000 This is a multi-part message in MIME format. --------------020601000705080507000607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. --------------020601000705080507000607 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------020601000705080507000607-- From patrick.jacquot@anpe.fr Fri Jun 16 08:45:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8114F3B0074 for ; Fri, 16 Jun 2006 08:45:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28690-06 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from smtp2.lc.anpe.fr (smtp2.lc.anpe.fr [80.118.163.16]) by menubar.gnome.org (Postfix) with ESMTP id 5012E3B0012 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from HOMERE01.anpe.fr (amadeus [127.0.0.1]) by smtp2.lc.anpe.fr (antivirus) with ESMTP id 39F4673C9C; Fri, 16 Jun 2006 13:54:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE01.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Fri, 16 Jun 2006 13:53:25 +0200 Message-ID: <44929BCF.2080909@anpe.fr> Date: Fri, 16 Jun 2006 13:53:51 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> In-Reply-To: <1150440307.26621.41.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 16 Jun 2006 11:53:25.0151 (UTC) FILETIME=[795772F0:01C6913B] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:45:13 -0000 Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl@redhat.com Fri Jun 16 08:49:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 485F93B002C for ; Fri, 16 Jun 2006 08:49:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29026-04 for ; Fri, 16 Jun 2006 08:49:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C6C253B0007 for ; Fri, 16 Jun 2006 08:49:18 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPNN016840; Fri, 16 Jun 2006 08:48:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPYD011183; Fri, 16 Jun 2006 08:48:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmOqK027223; Fri, 16 Jun 2006 08:48:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:48:24 +0200 Message-Id: <1150462104.1962.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:49:20 -0000 On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Frédéric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:55:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D29373B0012 for ; Fri, 16 Jun 2006 08:55:43 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29229-01 for ; Fri, 16 Jun 2006 08:55:42 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 1229B3B0007 for ; Fri, 16 Jun 2006 08:55:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCrIL28510; Fri, 16 Jun 2006 14:53:18 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp028490; Fri Jun 16 14:53:17 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E00233A009C; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid D44943A008B; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Message-ID: <4492A9D0.1030804@embl.fr> Date: Fri, 16 Jun 2006 14:53:36 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> In-Reply-To: <1150462104.1962.1.camel@greebo> Content-Type: multipart/mixed; boundary=------------070000060703070709040705 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:55:44 -0000 This is a multi-part message in MIME format. --------------070000060703070709040705 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? --------------070000060703070709040705 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------070000060703070709040705-- From alexl@redhat.com Fri Jun 16 09:09:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B9E0D3B0076 for ; Fri, 16 Jun 2006 09:09:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29459-05 for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 570133B002C for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8PQk023537; Fri, 16 Jun 2006 09:08:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8Ptc015871; Fri, 16 Jun 2006 09:08:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8NU0029583; Fri, 16 Jun 2006 09:08:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 15:08:24 +0200 Message-Id: <1150463304.1962.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 13:09:10 -0000 On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris@gnome-de.org Fri Jun 16 10:02:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D214C3B0012 for ; Fri, 16 Jun 2006 10:02:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30453-09 for ; Fri, 16 Jun 2006 10:02:06 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 8119F3B000B for ; Fri, 16 Jun 2006 10:02:04 -0400 (EDT) Received: (qmail 95134 invoked by uid 85); 16 Jun 2006 14:01:10 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.188.32):. Processed in 4.939873 secs); 16 Jun 2006 14:01:10 -0000 Received: from p5496bc20.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.188.32) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 16 Jun 2006 14:01:05 -0000 Subject: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-72GyeevQ02c61O4EiZxt" Date: Fri, 16 Jun 2006 16:01:00 +0200 Message-Id: <1150466460.16424.7.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.51 tagged_above=-999 required=2 tests=[AWL=-0.065, BAYES_00=-2.599, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.51 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:02:08 -0000 --=-72GyeevQ02c61O4EiZxt Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair --=-72GyeevQ02c61O4EiZxt Content-Disposition: attachment; filename=nautilus-sm2.diff Content-Type: text/x-patch; name=nautilus-sm2.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit ? src/.nautilus-application.c.swp Index: configure.in =================================================================== RCS file: /cvs/gnome/nautilus/configure.in,v retrieving revision 1.675 diff -u -p -r1.675 configure.in --- configure.in 12 Jun 2006 12:35:55 -0000 1.675 +++ configure.in 16 Jun 2006 13:58:45 -0000 @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.226 diff -u -p -r1.226 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 18 Mar 2006 07:13:49 -0000 1.226 +++ libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 13:58:48 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.132 diff -u -p -r1.132 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 15 Dec 2005 14:32:57 -0000 1.132 +++ libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 13:58:49 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 16 Jun 2006 13:58:49 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 16 Jun 2006 13:59:00 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1139,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1172,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1326,265 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + g_message ("is %s\n", filename); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[4] = { NULL }; + + argv[0] = "nautilus"; + argv[1] = "--no-default-window"; + + argv[3] = save_session_to_file (); + if (argv[3] != NULL) { + argv[2] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[3] != NULL) { + g_free (argv[3]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 16 Jun 2006 13:59:00 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 16 Jun 2006 13:59:01 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,8 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + N_("Load a saved session from the specified file."), N_("FILENAME") }, { NULL } }; @@ -243,6 +246,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -349,6 +353,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 16 Jun 2006 13:59:05 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 16 Jun 2006 13:59:05 -0000 @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); void start_desktop (); void stop_desktop (); void quit (); Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 16 Jun 2006 13:59:06 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 16 Jun 2006 13:59:08 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 16 Jun 2006 13:59:14 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 16 Jun 2006 13:59:15 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 16 Jun 2006 13:59:19 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-72GyeevQ02c61O4EiZxt-- From ruaudel@embl.fr Fri Jun 16 10:17:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 041543B0007 for ; Fri, 16 Jun 2006 10:17:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31262-02 for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 409803B000B for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GEEN515027; Fri, 16 Jun 2006 16:14:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp014897; Fri Jun 16 16:14:14 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E9D453A00A3; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid BD85C3A009C; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Message-ID: <4492BCC9.3070701@embl.fr> Date: Fri, 16 Jun 2006 16:14:34 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> In-Reply-To: <1150463304.1962.5.camel@greebo> Content-Type: multipart/mixed; boundary=------------030607090300020602080800 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:17:27 -0000 This is a multi-part message in MIME format. --------------030607090300020602080800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred --------------030607090300020602080800 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030607090300020602080800-- From alexl@redhat.com Fri Jun 16 10:40:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 69B0D3B000B for ; Fri, 16 Jun 2006 10:40:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31864-09 for ; Fri, 16 Jun 2006 10:40:38 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F30943B0074 for ; Fri, 16 Jun 2006 10:40:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJwW018100 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJj5001340 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMI38001834 for ; Fri, 16 Jun 2006 10:22:18 -0400 Subject: New permissions page From: Alexander Larsson To: Nautilus Content-Type: text/plain Date: Fri, 16 Jun 2006 16:22:18 +0200 Message-Id: <1150467738.1962.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:40:39 -0000 I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl@redhat.com Fri Jun 16 10:45:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B94D3B000B for ; Fri, 16 Jun 2006 10:45:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32146-02 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id B3F8A3B0074 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXFs007293; Fri, 16 Jun 2006 08:15:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXJC005301; Fri, 16 Jun 2006 08:15:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFWR2025637; Fri, 16 Jun 2006 08:15:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:15:32 +0200 Message-Id: <1150460132.26621.91.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:45:34 -0000 On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl@redhat.com Fri Jun 16 11:41:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA65B3B0080 for ; Fri, 16 Jun 2006 11:41:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01486-01 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 4FDAD3B0076 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFenfc011852; Fri, 16 Jun 2006 11:40:49 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFei3o019963; Fri, 16 Jun 2006 11:40:44 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFegbZ008520; Fri, 16 Jun 2006 11:40:43 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 17:40:37 +0200 Message-Id: <1150472437.1962.14.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 15:41:24 -0000 On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Frédéric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko@yahoo.com Sat Jun 17 03:33:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1350E3B028A for ; Sat, 17 Jun 2006 03:33:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12115-05 for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: from web32408.mail.mud.yahoo.com (web32408.mail.mud.yahoo.com [68.142.207.201]) by menubar.gnome.org (Postfix) with SMTP id 4082B3B071C for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: (qmail 60442 invoked by uid 60001); 17 Jun 2006 07:21:00 -0000 Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Received: from [172.188.218.75] by web32408.mail.mud.yahoo.com via HTTP; Sat, 17 Jun 2006 08:21:00 BST Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) From: Joachim Noreiko Subject: Re: New permissions page To: nautilus-list@gnome.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.909 tagged_above=-999 required=2 tests=[AWL=-1.446, BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: -0.909 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 07:33:56 -0000 --- nautilus-list-request@gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel@embl.fr Sat Jun 17 22:34:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDE743B00B2 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20813-01 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 5EF613B0087 for ; Sat, 17 Jun 2006 22:34:38 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5G92UM21496; Fri, 16 Jun 2006 11:02:30 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021214; Fri Jun 16 11:02:03 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 044C73A00A3; Fri, 16 Jun 2006 11:01:15 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid EC8163A008B; Fri, 16 Jun 2006 11:01:14 +0200 (CEST) Message-ID: <4492739C.3080608@embl.fr> Date: Fri, 16 Jun 2006 11:02:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Content-Type: multipart/mixed; boundary=------------000207040807030500030609 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:52.55345 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:43 -0000 This is a multi-part message in MIME format. --------------000207040807030500030609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred --------------000207040807030500030609 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------000207040807030500030609-- From ruaudel@embl.fr Sat Jun 17 22:34:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3A48B3B00DC for ; Sat, 17 Jun 2006 22:34:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20639-05 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id C6F0D3B0128 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GBrm324709; Fri, 16 Jun 2006 13:53:48 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp024600; Fri Jun 16 13:53:28 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id C79C53A009C; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid B98E93A008B; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Message-ID: <44929BCB.3000405@embl.fr> Date: Fri, 16 Jun 2006 13:53:47 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> In-Reply-To: <1150451672.26621.77.camel@greebo> Content-Type: multipart/mixed; boundary=------------090306030603010903060903 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:44 -0000 This is a multi-part message in MIME format. --------------090306030603010903060903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > --------------090306030603010903060903 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090306030603010903060903-- From alexl@redhat.com Mon Jun 19 05:34:55 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0A03B3B00A5 for ; Mon, 19 Jun 2006 05:34:55 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-04 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 7FA463B00A4 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XWjY003333; Mon, 19 Jun 2006 05:33:32 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XRpk001435; Mon, 19 Jun 2006 05:33:27 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XQSo027998; Mon, 19 Jun 2006 05:33:27 -0400 Subject: Re: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Alexander Larsson To: Rubin In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Content-Type: text/plain Date: Mon, 19 Jun 2006 11:33:26 +0200 Message-Id: <1150709607.1962.31.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:34:55 -0000 On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel@gmail.com Sat Jun 17 22:37:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B99513B00B2 for ; Sat, 17 Jun 2006 22:37:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20627-08 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.227]) by menubar.gnome.org (Postfix) with ESMTP id 981F23B0089 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: by wr-out-0506.google.com with SMTP id 68so857489wra for ; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.152.12 with SMTP id z12mr4476063wrd; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.102.7 with HTTP; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Date: Sat, 17 Jun 2006 20:36:28 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org Subject: widget advice for nautilus view MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:37:24 -0000 I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl@redhat.com Mon Jun 19 05:32:52 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D5A93B0004 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-02 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DA9513B008F for ; Mon, 19 Jun 2006 05:32:50 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9VmqA002779; Mon, 19 Jun 2006 05:31:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9Vm0L001128; Mon, 19 Jun 2006 05:31:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9ViJV027920; Mon, 19 Jun 2006 05:31:45 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Joachim Noreiko In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="=-HvacVzLTIJ84Cz/f7LbQ" Date: Mon, 19 Jun 2006 11:31:44 +0200 Message-Id: <1150709505.1962.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:32:52 -0000 --=-HvacVzLTIJ84Cz/f7LbQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request@gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions1.png Content-Type: image/png; name=permissions1.png Content-Transfer-Encoding: base64 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 2Fgez04AAAAASUVORK5CYII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions2.png Content-Type: image/png; name=permissions2.png Content-Transfer-Encoding: base64 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 HMeyDhw7fhLv9Rvxe/CQq9eus2//AbX7k7VOgNr1G2eKPTfMzdP2rs//dZEzZ88zY/Y8eVloaBj/ XPkXADs7W7S10454unftzOMnT1i+cjVJScnIZDIe+gfkKUEpax8gOjqGCxf/JjU1FWdnJ2rWqM7i JX+SmJTE6zdvWLlqLV27dMp0Cmrtuo0kJCby6vVrVq9dR7eunXI8RaWsH+5urtStU4sp02by9Fkg MTEx3Lp1G9MyaUeUly7n/a6tjH0qiPpWrfYmISGBV69fs2bteoX9zSindjPGpeiz1y1RggH9erNk 6XJiY2N5ERzMug2b+G7IwDzHL+RekSSCsLBwZsycS+++g/A5cIhvvm7P5vVrM02TkJBAr74DMw3P AgOVlivau1Jm6qTxGBsbsXP3Xn7+cbh8BQa4/M8VlixbwZxZ03Es68DSxQvQ0dHml1/HE/nqVY71 WVlZcur4IQYN7EdYWBjjJvzGsP/9zKYt2/Bwd5NP979h3zFh3K/cuHGL5i3b8Pffl5g4fgzDv/9W 7dinT52EmZkpP4/8lfDwl+jp6eGzbyft27bBe91Guvfqy9gJk+TXX9TpT9Y6Ie1o7XEeli2Ag70d A/r3oW//wcydv4Axv4yQl8XFxzN67ESc3CqyYOFili1ZiJaWFlZWluzfs4Ojvidw8aiMR8WqjBj1 KykpuU8EytqHD3f5JCUlAbB+7Uqio2Nwr1CFOvUaU61qFSZPHCefXk9PD4lEQo3aDaheqz6elSsx fuyHi6fpOxJSqVRlP7xXr8DWxoZ6DZtSvVYDDh4+Srlyjgz//lt69hlAnQZNct3frH0qiPpSUlOp Uach1WvVp4pn5Uz9VSSndjPGpeizBxj76y+U93CnSrU6fN6qLd9/N1jcOlrEtACZOvfiL1swjRHj 5xAXm/u9cEEoaOVcK2QbN/m38fTuWbB/xKdIcHAI1tZWbN66nekz53D/9rUCq7u4+vbv1Wu0bN2O wMd+8utUH0tsQu7ExsayfuUChv40XuW0ppb2RfMHZYJQ0J743yvW9r3Xb2SN93r09fWZm89bWrMq 7r4p8zHHJuSdSASCkAfjxvzCuDG/FHcYBapG9WrF/pf6QvEQl+UFQRA0nEgEgiAIGk4kAkEQBA0n EoEgCIKGE4lAEARBw4lEIAiCoOFEIhAEQdBwIhEIgiBoOJEIBEEQNJxIBAUo62MwPxX5eTSloJhM JuPO3XssX7k630/dE4TC9EklAlNLe+zLuRdK3ddv3OT0mXOFUrem+eXXcdSo05CyzuVxdq9E3wFD eBEcnGmapKRkRo0ei4t7ZSp4VufPFatyVQ5pv/dTu35jnN0rUcGzOtNnzsk2jSKFXT9AxSo1GDTk e8ZNmCx/jnS68PCX9OwzAGf3SpSvXI1Zc+Yr/S1/deJN99vkaVjYOKqMT1Wdppb2OQ7pP1eujKIY 7vs9oFHTlvKH9zRo1JwDBw+rrE8oXOK3ht5r3rIN1tZW3LmR999xF9KUK+fIru+G4FjWgbdvo/jh 51F069GXc6ePyaeZOn0m9+77cfPaJd6+jaJVmw7Y2tjIf35YVfmq1d6s9l7Ptk3rKFfOkbdvozI9 mU2Vwq4f4N9L57l334+WrdtlK+vZZwC1a9Vg/dqVPH8RTIeOXTA2NuK7IYPyFG+6EydPc/josRzr yG2df53N/LjQXXv2cfrMWZVPDlMWg7WVFRvWrcbB3g4tLS32+xxk4qSpfNWmtVoxC4XjkzoiUMbf P4B2X3fB2b0SVnblaNS0JRcufnh494WLl2jW8kus7Zywc3Tjiy/by8tMLdMeGxkSEoqppT33/R4o bGfrtp00ad4KG3tn7BzdaNCoebZpfA4conLVWji5VWTHrj1qx5h+amnTlm1U8Kyebf7k5GTGTZiM s3slXNwrM33mHNwreGU6rePvH0Cnrj2xLeuKs3slxo6flGlvNDk5mTHjf6OcawVcPTyZNWd+tvjz e6rouyGDcCyb9khGY2Mjenbvyt179+XPxU1ISGDdhs0MH/YdBgYG2NhY069PT5YtX6VWeXJyMvN+ X8TY0SMpV85R3k7FCuXViq+w609XsmTOj5R8/PgJV69d53/DhiKVSinrYM/wYd+xes26PMWbLjQ0 jN8mT2Pe7Jx/DfXfq9cwtbQnISFBrTrLe7jLB9MyZdi6bQfLl/4hf3JYxvrUjaF0aWPKOtijpaVF QkICzwKD+KZjB4XLUCga/5lEEBMbS+tWn+Ozdycb163B3z+A4T/8LC8fOGQo9+8/YPNGb44c3Jvp 2b2X/joNgLm5GZf+Oo2zs1OObaxZu55hP/xMfHw8K5cvYYP3Kjp983WmaSJfvWL+gj/o2KEdb99G MXHSVLVjBAgLC2PX7n2M/XUU0dExmeZfsGgJy1eupmaN6uzcvgmZDCIiI+Xl0dExtOvYhavXrrNp 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 YII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions3.png Content-Type: image/png; name=permissions3.png Content-Transfer-Encoding: base64 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 iZ+aPf3U5P2hEBwSSkvT4O80Xkycd0Axm80/2qmkSqn6P7tuajSZcXF2wmjQnzuxDMD2+XeF0HYy BuOnZk8/NXl/KFyKdrmgTXkZPz6sDKqw/UuenVwQrFZb2y281JLIkPGzgRxQfiaQV7suDFY5AMuQ MeKQA8rPAf2fGZVx3pD3m2TIGHnIAeVnACvIU5QLhdxeMmSMOOSXFs4DOafzmBKVRG9v3/f6/YeA Vb4u7Po/FlB+DDoq4+eP/zqgZJ7IZkpUElOikoiISWHVZdewZ9+h7/28kVT8I8eO22UTXz/LEyFW q+Q6dOgw3r4BePsG4B8wmti4RD766JNB6UbyOnH8BN6+AWh7en7QvN/nOlc42X/wKFde+2ui4uYz O3kxN992F4XFpT9IV4qxdPUVvPPBJ/b7xqZmpkQl8cHHn9m51jYN0fELOJZ50m47Wm0ve/YdwmIZ uS8nlFdWMSUqiVdef1vCl5SWEzFr7nk942LIdTYMtP+IWXNJWbyau+75K+UVVRe9/IuNH7Itzxcj NkM5fmgHh3ZtYdKEcdz55wcwGAzf6zlTJk/kg7dewdVt5F6gPHFoJ2V5mfZLpfpxHn/+3rBaGeo/ gMryYirLi0iIj+eO399Jn043ZNqh/jOajOed1oqViOnT2PbNV7i6uV5Qvv827/f5b7glr63ffsdt d97DxvWryTy4g33bvyBy+jQ2XXfzDx5UUucmcfhIpv0+43gWAMdP5ti5fQePkJgwh+iZkXbbKS2r 4JY7/oTRaBr0zP8Wz7/8BiWl5d8r78WU62w4cWgnpWcyyD62h5eeeZSu7m42/OIGTp/J/8FkuBi4 FG15LoxYQFGgIDg4kPVrVmIwGOz2+uWWb1mx/iriUpaSNH8Fmz//2p7nxX//h5RFq5mdvJj1m64H oKy8kmtvvBW9Tnivor6hkd/c/kdikhYRk7SIvz782IjI2z8T2r33IGsvv464lKW8/tb7HDqSwerL rmHO3KW8+8FmSZ7s02dYueFqImPnce2Nt9LYNPTLVIeOZLB83S+YnbyY63/9O9o07d+rzKHaZyhY +/838LLxvj6+rFiejl5voFerZc/ufSQkphIWPol16y+npbkVrHDixEl8/IL48sstzJ6TyN1332fn tm3bTuq8hYybMJXnnnuRPbv3MTdlPuHjp/Dqq2+AFYqKilm9ZgO6Ph1Y4bHHn2JaRBRh4ZNIW7DE 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 tvrxfy1q6mPXqvNYAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions4.png Content-Type: image/png; name=permissions4.png Content-Transfer-Encoding: base64 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 yQv/D3ppEXAe/kOyAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ-- From alexl@redhat.com Mon Jun 19 08:41:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 006D43B09D7 for ; Mon, 19 Jun 2006 08:41:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11497-07 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F9AA3B0D96 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSaF8026601; Mon, 19 Jun 2006 08:28:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSZeG001636; Mon, 19 Jun 2006 08:28:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSYlg007366; Mon, 19 Jun 2006 08:28:35 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 14:28:35 +0200 Message-Id: <1150720115.16397.6.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 12:41:01 -0000 On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Mon Jun 19 10:47:50 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D3523B00D8 for ; Mon, 19 Jun 2006 10:47:50 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15911-05 for ; Mon, 19 Jun 2006 10:47:47 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id E9A213B0017 for ; Mon, 19 Jun 2006 10:47:46 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDndPq023522; Mon, 19 Jun 2006 09:49:39 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDnd7B020926; Mon, 19 Jun 2006 09:49:39 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDncHK013361; Mon, 19 Jun 2006 09:49:38 -0400 Subject: Re: widget advice for nautilus view From: Alexander Larsson To: Mark Kegel In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Content-Type: text/plain Date: Mon, 19 Jun 2006 15:49:38 +0200 Message-Id: <1150724978.16397.9.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 14:47:50 -0000 On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris@gnome-de.org Mon Jun 19 11:24:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3C37C3B0734 for ; Mon, 19 Jun 2006 11:24:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17721-01 for ; Mon, 19 Jun 2006 11:24:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 6A67C3B0832 for ; Mon, 19 Jun 2006 11:23:59 -0400 (EDT) Received: (qmail 2563 invoked by uid 85); 19 Jun 2006 15:23:03 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.155.81):. Processed in 0.207799 secs); 19 Jun 2006 15:23:03 -0000 Received: from p54969b51.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.155.81) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 19 Jun 2006 15:23:03 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:22:57 +0200 Message-Id: <1150730577.5245.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:24:07 -0000 Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl@redhat.com Mon Jun 19 11:55:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11E2B3B0924 for ; Mon, 19 Jun 2006 11:55:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18742-04 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9EBE23B03A9 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsBQf010743; Mon, 19 Jun 2006 11:54:11 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsAf3026315; Mon, 19 Jun 2006 11:54:10 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFs9M3009507; Mon, 19 Jun 2006 11:54:10 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:54:09 +0200 Message-Id: <1150732450.16397.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:55:11 -0000 On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl@redhat.com Tue Jun 20 04:09:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8B05B3B027F for ; Tue, 20 Jun 2006 04:09:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01941-05 for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 251463B027D for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K8916A009982; Tue, 20 Jun 2006 04:09:01 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K891t6001277; Tue, 20 Jun 2006 04:09:01 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K890Lx026400; Tue, 20 Jun 2006 04:09:00 -0400 Subject: Re: Overlapping icons, again From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Tue, 20 Jun 2006 10:09:00 +0200 Message-Id: <1150790940.16397.21.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 08:09:53 -0000 On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf@cbk.poznan.pl Tue Jun 20 09:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CA3763B044D for ; Tue, 20 Jun 2006 09:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17248-03 for ; Tue, 20 Jun 2006 09:13:42 -0400 (EDT) Received: from goliath.sylaba.poznan.pl (goliath.sylaba.poznan.pl [193.151.36.3]) by menubar.gnome.org (Postfix) with ESMTP id 25DD03B02A4 for ; Tue, 20 Jun 2006 09:13:41 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 97AC818D1E4; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from goliath.sylaba.poznan.pl ([127.0.0.1]) by localhost (goliath.sylaba.poznan.pl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 89603-01-62; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (ip-83-238-212-180.netia.com.pl [83.238.212.180]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 2C66318D1D2; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (venus.local.navi.pl [192.168.1.10]) by venus.local.navi.pl (8.13.1/8.13.1) with ESMTP id k5KDBxws022710; Tue, 20 Jun 2006 15:12:09 +0200 Subject: Re: New permissions page From: Olaf =?iso-8859-2?Q?Fr=B1czyk?= To: Alexander Larsson In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:11:58 +0200 Message-Id: <1150809118.17794.51.camel@venus.local.navi.pl> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at sylaba.poznan.pl X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.783 tagged_above=-999 required=2 tests=[AWL=-0.537, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_FAIL=1.142, TW_RW=0.077] X-Spam-Score: -1.783 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 13:13:45 -0000 On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf FrÄ…czyk From alexl@redhat.com Tue Jun 20 10:12:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2BAB13B02A4 for ; Tue, 20 Jun 2006 10:12:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19006-06 for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 478C83B03CF for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdm3v023018; Tue, 20 Jun 2006 09:39:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdmHs006573; Tue, 20 Jun 2006 09:39:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdk56015503; Tue, 20 Jun 2006 09:39:47 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Olaf =?UTF-8?Q?Fr=C4=85czyk?= In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:39:46 +0200 Message-Id: <1150810787.16397.40.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.55 tagged_above=-999 required=2 tests=[AWL=-0.026, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_RW=0.077] X-Spam-Score: -2.55 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 14:12:11 -0000 On Tue, 2006-06-20 at 15:11 +0200, Olaf FrÄ…czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris@gnome-de.org Tue Jun 20 13:59:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0F8003B00DD for ; Tue, 20 Jun 2006 13:59:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02118-05 for ; Tue, 20 Jun 2006 13:59:18 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 1655F3B000C for ; Tue, 20 Jun 2006 13:59:17 -0400 (EDT) Received: (qmail 68748 invoked by uid 85); 20 Jun 2006 17:58:56 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.204.200):. Processed in 2.796389 secs); 20 Jun 2006 17:58:56 -0000 Received: from p5496ccc8.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.204.200) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 20 Jun 2006 17:58:53 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Content-Type: multipart/mixed; boundary="=-bgJ4fvimCkwAPOVjBPdI" Date: Tue, 20 Jun 2006 19:58:49 +0200 Message-Id: <1150826329.5240.5.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.471 tagged_above=-999 required=2 tests=[AWL=-0.103, BAYES_00=-2.599, TW_GD=0.077, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.471 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 17:59:20 -0000 --=-bgJ4fvimCkwAPOVjBPdI Content-Type: text/plain Content-Transfer-Encoding: 7bit Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair --=-bgJ4fvimCkwAPOVjBPdI Content-Disposition: attachment; filename=nautilus-sm3.diff Content-Type: text/x-patch; name=nautilus-sm3.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.227 diff -u -p -r1.227 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 14:19:55 -0000 1.227 +++ libnautilus-private/nautilus-global-preferences.c 20 Jun 2006 17:52:00 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.133 diff -u -p -r1.133 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 14:19:55 -0000 1.133 +++ libnautilus-private/nautilus-global-preferences.h 20 Jun 2006 17:52:01 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 20 Jun 2006 17:52:06 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 20 Jun 2006 17:52:18 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -615,8 +621,13 @@ nautilus_application_startup (NautilusAp Nautilus_Shell_open_windows (shell, url_list, corba_startup_id, corba_geometry, browser_window, &ev); CORBA_free (url_list); } else if (!no_default_window) { + g_assert (session_to_load == NULL); Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1140,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1173,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1327,263 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[3] = { NULL }; + + argv[0] = "nautilus"; + + argv[2] = save_session_to_file (); + if (argv[2] != NULL) { + argv[1] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[2] != NULL) { + g_free (argv[2]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 20 Jun 2006 17:52:18 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 20 Jun 2006 17:52:20 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,9 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + /* Translators: --no-default-window is a nautilus command line parameter, don't modify it. */ + N_("Load a saved session from the specified file. Implies \"--no-default-window\"."), N_("FILENAME") }, { NULL } }; @@ -243,6 +247,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -262,6 +267,10 @@ main (int argc, char *argv[]) GNOME_PARAM_HUMAN_READABLE_NAME, _("Nautilus"), NULL); + if (session_to_load != NULL) { + no_default_window = TRUE; + } + /* Do this here so that gdk_display is initialized */ if (startup_id_copy == NULL) { /* Create a fake one containing a timestamp that we can use */ @@ -349,6 +358,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 20 Jun 2006 17:52:25 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 20 Jun 2006 17:52:25 -0000 @@ -17,6 +17,7 @@ module Nautilus { void stop_desktop (); void quit (); void restart (); + void load_session (in string filename); }; }; Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 20 Jun 2006 17:52:26 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 20 Jun 2006 17:52:31 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 20 Jun 2006 17:52:36 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 20 Jun 2006 17:52:37 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 20 Jun 2006 17:52:43 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-bgJ4fvimCkwAPOVjBPdI-- From alexl@redhat.com Wed Jun 21 03:27:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 58AA43B0D06 for ; Wed, 21 Jun 2006 03:27:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16837-02 for ; Wed, 21 Jun 2006 03:27:06 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C69353B041C for ; Wed, 21 Jun 2006 03:27:05 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7R0RA028083; Wed, 21 Jun 2006 03:27:00 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QuFv031841; Wed, 21 Jun 2006 03:26:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QrI9014055; Wed, 21 Jun 2006 03:26:55 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150826329.5240.5.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 09:26:53 +0200 Message-Id: <1150874813.16397.58.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 07:27:07 -0000 On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > The session restart command includes > > > "--no-default-window" (nautilus-application.c:save_session). > > > > I guess that is good enough, although we could also always do that when > > specifying a session. Its unlikely that people would use the session > > switch manually though, so it doesn't really matter. > > New patch attached, which takes into account your other worthy > suggestions and makes --load-session imply presence of > --no-default-window. Looks good to commit then. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish sweet-toothed grifter from the 'hood. She's a violent impetuous bounty hunter who dreams of becoming Elvis. They fight crime! From carey@internode.on.net Tue Jun 20 08:48:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 355CC3B04D7 for ; Tue, 20 Jun 2006 08:48:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15989-01 for ; Tue, 20 Jun 2006 08:48:52 -0400 (EDT) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by menubar.gnome.org (Postfix) with ESMTP id 42D563B0510 for ; Tue, 20 Jun 2006 08:48:51 -0400 (EDT) Received: from [192.168.1.24] (ppp7-187.lns1.syd7.internode.on.net [59.167.7.187]) by smtp3.adl2.internode.on.net (8.13.6/8.13.5) with ESMTP id k5KCll85011167 for ; Tue, 20 Jun 2006 22:17:48 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org Content-Type: text/plain Date: Tue, 20 Jun 2006 22:47:47 +1000 Message-Id: <1150807667.5243.53.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-Mailman-Approved-At: Wed, 21 Jun 2006 08:27:09 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 12:48:53 -0000 Hi, I have remote drives mounted via NFS/SMB/etc on my laptops, and due to these remote directories being mounted, nautilus thinks they are local, and tries to generate previews for everything (very much not fun over a 256kbit or 512kbit uplink). Anyone know if there is a gconf setting or some way to get nautilus to be smarter about this and detect remote directories automatically (ie. partition not local, so therefore remote, then don't show preview)? Or at the least, a way to manually disable previews on a per-directory basis? Any ideas are appreciated. From chris@gnome-de.org Wed Jun 21 12:26:19 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 942C13B0F02 for ; Wed, 21 Jun 2006 12:26:19 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20942-09 for ; Wed, 21 Jun 2006 12:26:16 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id A4DE83B0FEE for ; Wed, 21 Jun 2006 12:26:15 -0400 (EDT) Received: (qmail 75238 invoked by uid 85); 21 Jun 2006 16:26:09 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.201671 secs); 21 Jun 2006 16:26:09 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 16:26:09 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150874813.16397.58.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> <1150874813.16397.58.camel@greebo> Content-Type: text/plain Date: Wed, 21 Jun 2006 18:25:54 +0200 Message-Id: <1150907154.5245.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:26:19 -0000 Am Mittwoch, den 21.06.2006, 09:26 +0200 schrieb Alexander Larsson: > On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > > > The session restart command includes > > > > "--no-default-window" (nautilus-application.c:save_session). > > > > > > I guess that is good enough, although we could also always do that when > > > specifying a session. Its unlikely that people would use the session > > > switch manually though, so it doesn't really matter. > > > > New patch attached, which takes into account your other worthy > > suggestions and makes --load-session imply presence of > > --no-default-window. > > Looks good to commit then. Done :). -- Christian Neumair From chris@gnome-de.org Wed Jun 21 15:37:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 850B73B0090 for ; Wed, 21 Jun 2006 15:37:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00594-08 for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 40A563B007C for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: (qmail 73397 invoked by uid 85); 21 Jun 2006 19:37:12 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.304044 secs); 21 Jun 2006 19:37:12 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:37:12 -0000 Subject: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-rdcaTTcK9Z9jAJx6/pO4" Date: Wed, 21 Jun 2006 21:37:08 +0200 Message-Id: <1150918628.5245.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:37:28 -0000 --=-rdcaTTcK9Z9jAJx6/pO4 Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch should fix issues where handlers registered with GtkActionGroups override those registered with child widgets, cf. bug 345528 [1]. [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 -- Christian Neumair --=-rdcaTTcK9Z9jAJx6/pO4 Content-Disposition: attachment; filename=nautilus-window-keybindings.diff Content-Type: text/x-patch; name=nautilus-window-keybindings.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.465 diff -u -p -r1.465 nautilus-window.c --- src/nautilus-window.c 21 Jun 2006 16:26:23 -0000 1.465 +++ src/nautilus-window.c 21 Jun 2006 19:31:34 -0000 @@ -742,6 +742,35 @@ nautilus_window_realize (GtkWidget *widg update_cursor (NAUTILUS_WINDOW (widget)); } +/* try to propagate key press event to children before handling + * mnemonics related to action groups. This is for instance relevant + * when the GtkAction file deletion keybinding would be activated + * instead of the rename widget text deletion keybinding. + */ +static gint +nautilus_window_key_press_event (GtkWidget *widget, + GdkEventKey *event) +{ + GtkWindow *window = GTK_WINDOW (widget); + + if (!gtk_window_propagate_key_event (window, event) && + !gtk_window_activate_key (window, event)) { + /* skip GtkWindow handler, directly use GtkWidget method */ + + static GtkWidgetClass *gtk_widget_class = NULL; + if (gtk_widget_class == NULL) { + gtk_widget_class = g_type_class_peek (gtk_widget_get_type ()); + g_assert (gtk_widget_class != NULL); + g_assert (gtk_widget_class->key_press_event != NULL); + } + + return GTK_WIDGET_CLASS (gtk_widget_class)->key_press_event (widget, event); + } + + return TRUE; + +} + /* * Main API */ @@ -1583,6 +1612,7 @@ nautilus_window_class_init (NautilusWind GTK_WIDGET_CLASS (class)->show = nautilus_window_show; GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request; GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize; + GTK_WIDGET_CLASS (class)->key_press_event = nautilus_window_key_press_event; class->add_current_location_to_history_list = real_add_current_location_to_history_list; class->get_title = real_get_title; class->set_title = real_set_title; --=-rdcaTTcK9Z9jAJx6/pO4-- From chris@gnome-de.org Wed Jun 21 15:51:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B0923B00E2 for ; Wed, 21 Jun 2006 15:51:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01297-07 for ; Wed, 21 Jun 2006 15:51:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 566013B01E2 for ; Wed, 21 Jun 2006 15:50:59 -0400 (EDT) Received: (qmail 5765 invoked by uid 85); 21 Jun 2006 19:50:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 2.075383 secs); 21 Jun 2006 19:50:58 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:50:54 -0000 Subject: Re: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list In-Reply-To: <1150918628.5245.9.camel@localhost.localdomain> References: <1150918628.5245.9.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 21:50:50 +0200 Message-Id: <1150919450.5245.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:51:01 -0000 Am Mittwoch, den 21.06.2006, 21:37 +0200 schrieb Christian Neumair: > The attached patch should fix issues where handlers registered with > GtkActionGroups override those registered with child widgets, cf. bug > 345528 [1]. > > [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 It seems to break keynav in subtle ways, and requires a stricter modifier mask checking for our custom widgets (icon container etc.) which for instance eats alt+arrow key. -- Christian Neumair From patrick.jacquotf@free.fr Wed Jun 21 17:59:06 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4E9CA3B04CB for ; Wed, 21 Jun 2006 17:59:06 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08416-10 for ; Wed, 21 Jun 2006 17:59:05 -0400 (EDT) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by menubar.gnome.org (Postfix) with ESMTP id C303B3B0429 for ; Wed, 21 Jun 2006 17:59:04 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp4-g19.free.fr (Postfix) with ESMTP id CF45454943; Wed, 21 Jun 2006 23:59:01 +0200 (CEST) Subject: Re: Nautilus remote previews From: Patrick Jacquot To: Carey O'Shea In-Reply-To: <1150807667.5243.53.camel@carey-laptop> References: <1150807667.5243.53.camel@carey-laptop> Content-Type: text/plain; charset=utf-8 Date: Wed, 21 Jun 2006 23:58:55 +0200 Message-Id: <1150927136.12639.8.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.5) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.578 tagged_above=-999 required=2 tests=[AWL=0.021, BAYES_00=-2.599] X-Spam-Score: -2.578 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 21:59:06 -0000 Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > Hi, > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > these remote directories being mounted, nautilus thinks they are local, > and tries to generate previews for everything (very much not fun over a > 256kbit or 512kbit uplink). > > Anyone know if there is a gconf setting or some way to get nautilus to > be smarter about this and detect remote directories automatically (ie. > partition not local, so therefore remote, then don't show preview)? > > Or at the least, a way to manually disable previews on a per-directory > basis? > > Any ideas are appreciated. > > In the Nautilus preferences, tab "previews", you can ask the previews for "only local files"; separately for sound files and for "other previews" i.e. images. There are three choices for each category: _ never - always - for local files only HTH -- Patrick From carey@internode.on.net Thu Jun 22 02:11:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7BCC3B02D2 for ; Thu, 22 Jun 2006 02:11:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32425-06 for ; Thu, 22 Jun 2006 02:11:17 -0400 (EDT) Received: from ash25e.internode.on.net (ash25e.internode.on.net [203.16.214.182]) by menubar.gnome.org (Postfix) with ESMTP id 0FB013B0234 for ; Thu, 22 Jun 2006 02:11:16 -0400 (EDT) Received: from [192.168.1.2] (ppp19-139.lns2.syd7.internode.on.net [59.167.19.139]) by ash25e.internode.on.net (8.13.6/8.13.5) with ESMTP id k5M6BEqD069510 for ; Thu, 22 Jun 2006 15:41:14 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Re: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org In-Reply-To: <1150927136.12639.8.camel@proton> References: <1150807667.5243.53.camel@carey-laptop> <1150927136.12639.8.camel@proton> Content-Type: text/plain; charset=UTF-8 Date: Thu, 22 Jun 2006 16:11:13 +1000 Message-Id: <1150956674.22582.4.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:11:20 -0000 Thanks for your reply. My problem is that the "Local Files Only" option does not work with remotely mounted SMB directories. Is this problem known? Regards, Carey. On Wed, 2006-06-21 at 23:58 +0200, Patrick Jacquot wrote: > Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > > Hi, > > > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > > these remote directories being mounted, nautilus thinks they are local, > > and tries to generate previews for everything (very much not fun over a > > 256kbit or 512kbit uplink). > > > > Anyone know if there is a gconf setting or some way to get nautilus to > > be smarter about this and detect remote directories automatically (ie. > > partition not local, so therefore remote, then don't show preview)? > > > > Or at the least, a way to manually disable previews on a per-directory > > basis? > > > > Any ideas are appreciated. > > > > > In the Nautilus preferences, tab "previews", you can ask the previews > for "only local files"; separately for sound files and for > "other previews" i.e. images. There are three choices for each category: > _ never > - always > - for local files only > HTH From alan.gibson@gmail.com Thu Jun 22 02:26:00 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4B0F33B02AB for ; Thu, 22 Jun 2006 02:26:00 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01065-01 for ; Thu, 22 Jun 2006 02:25:59 -0400 (EDT) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by menubar.gnome.org (Postfix) with ESMTP id 6C3993B026A for ; Thu, 22 Jun 2006 02:25:58 -0400 (EDT) Received: by nf-out-0910.google.com with SMTP id h2so219295nfe for ; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.241.6 with SMTP id o6mr1278015nfh; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.231.16 with HTTP; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Message-ID: Date: Wed, 21 Jun 2006 23:25:57 -0700 From: "Alan Gibson" To: nautilus-list@gnome.org Subject: not landing in SFTP home directory MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:26:00 -0000 hello all. first post, good to be here. gnome, and by extension nautilus, are excellent apps. now to the problem: when i access an SFTP server added via "Connect to Server..." the default directory is the root of the server, not my home directory. the same operation with `sftp` lands me in my home directory. this behavior makes "connect to server" unusable for many users. this was filed as a bug, along with another problem, here: http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. anyone have any idea of the status of this, or if it this behavior is going to stay this way? thanks much, alan From alexl@redhat.com Thu Jun 22 03:43:59 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CED983B018C for ; Thu, 22 Jun 2006 03:43:59 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05592-05 for ; Thu, 22 Jun 2006 03:43:57 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 025A73B021B for ; Thu, 22 Jun 2006 03:43:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7huku029640; Thu, 22 Jun 2006 03:43:56 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7hugX028990; Thu, 22 Jun 2006 03:43:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7ht6g030438; Thu, 22 Jun 2006 03:43:55 -0400 Subject: Re: not landing in SFTP home directory From: Alexander Larsson To: Alan Gibson In-Reply-To: References: Content-Type: text/plain Date: Thu, 22 Jun 2006 09:43:54 +0200 Message-Id: <1150962235.16397.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 07:44:00 -0000 On Wed, 2006-06-21 at 23:25 -0700, Alan Gibson wrote: > hello all. first post, good to be here. gnome, and by extension > nautilus, are excellent apps. > > now to the problem: > > when i access an SFTP server added via "Connect to Server..." the > default directory is the root of the server, not my home directory. > the same operation with `sftp` lands me in my home directory. this > behavior makes "connect to server" unusable for many users. > > this was filed as a bug, along with another problem, here: > http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed > against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. > > anyone have any idea of the status of this, or if it this behavior is > going to stay this way? Its clearly a bug, so hopefully it'll get fixed eventually. The reason its not fixed is the standard "not enough resources" one. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a gun-slinging crooked card sharp plagued by the memory of his family's brutal murder. She's a provocative belly-dancing soap star married to the Mob. They fight crime! From chris@gnome-de.org Thu Jun 22 16:19:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 6CB943B0357 for ; Thu, 22 Jun 2006 16:19:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23663-07 for ; Thu, 22 Jun 2006 16:19:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 036763B0859 for ; Thu, 22 Jun 2006 16:18:04 -0400 (EDT) Received: (qmail 80585 invoked by uid 85); 22 Jun 2006 20:17:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.147.150):. Processed in 3.06236 secs); 22 Jun 2006 20:17:58 -0000 Received: from p54969396.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.147.150) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 22 Jun 2006 20:17:55 -0000 Subject: [PATCH] allow to drop URIs, URLs and text to subfolders From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-wko5hNaIXKFzt/OLy/jx" Date: Thu, 22 Jun 2006 22:17:51 +0200 Message-Id: <1151007472.19595.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 20:19:11 -0000 --=-wko5hNaIXKFzt/OLy/jx Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch considers subfolders as drop targets for non-GNOME Icon List drag data that refers to files. -- Christian Neumair --=-wko5hNaIXKFzt/OLy/jx Content-Disposition: attachment; filename=nautilus-dnd.diff Content-Type: text/x-patch; name=nautilus-dnd.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-file-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.c,v retrieving revision 1.7 diff -u -p -r1.7 nautilus-file-dnd.c --- libnautilus-private/nautilus-file-dnd.c 12 Dec 2005 16:59:10 -0000 1.7 +++ libnautilus-private/nautilus-file-dnd.c 22 Jun 2006 19:52:31 -0000 @@ -32,19 +32,14 @@ #include #include -gboolean -nautilus_drag_can_accept_item (NautilusFile *drop_target_item, - const char *item_uri) +static gboolean +nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; - gboolean res; - - if (nautilus_file_matches_uri (drop_target_item, item_uri)) { - /* can't accept itself */ - return FALSE; - } - + if (nautilus_file_is_directory (drop_target_item)) { + gboolean res; + /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); @@ -68,7 +63,19 @@ nautilus_drag_can_accept_item (NautilusF return FALSE; } - + +gboolean +nautilus_drag_can_accept_item (NautilusFile *drop_target_item, + const char *item_uri) +{ + if (nautilus_file_matches_uri (drop_target_item, item_uri)) { + /* can't accept itself */ + return FALSE; + } + + return nautilus_drag_can_accept_files (drop_target_item); +} + gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items) @@ -92,6 +99,39 @@ nautilus_drag_can_accept_items (Nautilus } return TRUE; +} + +gboolean +nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items) +{ + switch (drag_type) { + case NAUTILUS_ICON_DND_GNOME_ICON_LIST: + return nautilus_drag_can_accept_items (drop_target_item, items); + + case NAUTILUS_ICON_DND_URI_LIST: + case NAUTILUS_ICON_DND_URL: + case NAUTILUS_ICON_DND_TEXT: + return nautilus_drag_can_accept_files (drop_target_item); + + case NAUTILUS_ICON_DND_KEYWORD: + return TRUE; + + case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: + return FALSE; + + /* TODO return TRUE for folders as soon as drop handling is implemented */ + case NAUTILUS_ICON_DND_COLOR: + case NAUTILUS_ICON_DND_BGIMAGE: + case NAUTILUS_ICON_DND_RESET_BACKGROUND: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } + } void Index: libnautilus-private/nautilus-file-dnd.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.h,v retrieving revision 1.5 diff -u -p -r1.5 nautilus-file-dnd.h --- libnautilus-private/nautilus-file-dnd.h 22 Feb 2002 18:54:15 -0000 1.5 +++ libnautilus-private/nautilus-file-dnd.h 22 Jun 2006 19:52:31 -0000 @@ -25,6 +25,7 @@ #ifndef NAUTILUS_FILE_DND_H #define NAUTILUS_FILE_DND_H +#include #include #define NAUTILUS_FILE_DND_ERASE_KEYWORD "erase" @@ -33,6 +34,9 @@ gboolean nautilus_drag_can_accept_item const char *item_uri); gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items); +gboolean nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items); void nautilus_drag_file_receive_dropped_keyword (NautilusFile *file, const char *keyword); Index: libnautilus-private/nautilus-icon-container.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v retrieving revision 1.415 diff -u -p -r1.415 nautilus-icon-container.c --- libnautilus-private/nautilus-icon-container.c 15 May 2006 22:55:24 -0000 1.415 +++ libnautilus-private/nautilus-icon-container.c 22 Jun 2006 19:53:16 -0000 @@ -4596,8 +4604,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4609,8 +4618,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4622,8 +4632,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: libnautilus-private/nautilus-icon-container.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.h,v retrieving revision 1.92 diff -u -p -r1.92 nautilus-icon-container.h --- libnautilus-private/nautilus-icon-container.h 15 May 2006 22:55:24 -0000 1.92 +++ libnautilus-private/nautilus-icon-container.h 22 Jun 2006 19:53:18 -0000 Index: libnautilus-private/nautilus-icon-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-dnd.c,v retrieving revision 1.154 diff -u -p -r1.154 nautilus-icon-dnd.c --- libnautilus-private/nautilus-icon-dnd.c 15 May 2006 22:55:24 -0000 1.154 +++ libnautilus-private/nautilus-icon-dnd.c 22 Jun 2006 19:53:21 -0000 @@ -84,6 +84,10 @@ static void dnd_highlight_queue_redr static GtkTargetList *drop_types_list = NULL; static GtkTargetList *drop_types_list_root = NULL; +static char * nautilus_icon_container_find_drop_target (NautilusIconContainer *container, + GdkDragContext *context, + int x, int y, gboolean *icon_hit); + static EelCanvasItem * create_selection_shadow (NautilusIconContainer *container, GList *list) @@ -618,44 +622,65 @@ receive_dropped_keyword (NautilusIconCon /* handle dropped url */ static void -receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y) +receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragContext *context, int x, int y) { + char *drop_target; + if (encoded_url == NULL) { return; } + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_url", encoded_url, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped uri list */ static void -receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y) +receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragContext *context, int x, int y) { + char *drop_target; + if (uri_list == NULL) { return; } - + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_uri_list", uri_list, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped text */ static void -receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragAction action, int x, int y) +receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragContext *context, int x, int y) { + char *drop_target; + if (text == NULL) { return; } + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); g_signal_emit_by_name (container, "handle_text", text, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } static int @@ -843,7 +868,7 @@ handle_local_move (NautilusIconContainer nautilus_icon_container_add (container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - FALSE); + FALSE, FALSE); icon = nautilus_icon_container_get_icon_by_uri (container, item->uri); @@ -939,8 +964,11 @@ nautilus_icon_container_find_drop_target NautilusFile *file; char *icon_uri; - *icon_hit = FALSE; - if (container->details->dnd_info->drag_info.selection_list == NULL) { + if (icon_hit) { + *icon_hit = FALSE; + } + + if (!container->details->dnd_info->drag_info.got_drop_data_type) { return NULL; } @@ -959,8 +987,9 @@ nautilus_icon_container_find_drop_target if (icon_uri != NULL) { file = nautilus_file_get (icon_uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { /* the item we dropped our selection on cannot accept the items, * do the same thing as if we just dropped the items on the canvas */ @@ -973,11 +1002,16 @@ nautilus_icon_container_find_drop_target } if (drop_target_icon == NULL) { - *icon_hit = FALSE; + if (icon_hit) { + *icon_hit = FALSE; + } + return get_container_uri (container); } - *icon_hit = TRUE; + if (icon_hit) { + *icon_hit = TRUE; + } return nautilus_icon_container_get_icon_drop_target_uri (container, drop_target_icon); } @@ -1177,10 +1211,6 @@ nautilus_icon_dnd_update_drop_target (Na char *uri; g_assert (NAUTILUS_IS_ICON_CONTAINER (container)); - if ((container->details->dnd_info->drag_info.selection_list == NULL) - && (container->details->dnd_info->drag_info.data_type != NAUTILUS_ICON_DND_KEYWORD)) { - return; - } canvas_widget_to_world (EEL_CANVAS (container), x, y, &world_x, &world_y); @@ -1199,8 +1229,9 @@ nautilus_icon_dnd_update_drop_target (Na file = nautilus_file_get (uri); g_free (uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { icon = NULL; } @@ -1642,20 +1673,20 @@ drag_data_received_callback (GtkWidget * case NAUTILUS_ICON_DND_URL: receive_dropped_url (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_URI_LIST: receive_dropped_uri_list (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_TEXT: tmp = gtk_selection_data_get_text (data); receive_dropped_text (NAUTILUS_ICON_CONTAINER (widget), - (char *) tmp, context->action, x, y); + (char *) tmp, context, x, y); success = TRUE; g_free (tmp); break; Index: libnautilus-private/nautilus-marshal.list =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-marshal.list,v retrieving revision 1.11 diff -u -p -r1.11 nautilus-marshal.list --- libnautilus-private/nautilus-marshal.list 12 Dec 2005 16:59:10 -0000 1.11 +++ libnautilus-private/nautilus-marshal.list 22 Jun 2006 19:53:27 -0000 @@ -16,5 +16,6 @@ VOID:POINTER,POINTER VOID:POINTER,POINTER,POINTER,ENUM,INT,INT VOID:POINTER,STRING VOID:POINTER,STRING,ENUM,INT,INT +VOID:STRING,STRING,ENUM,INT,INT VOID:STRING,ENUM,INT,INT VOID:STRING,STRING Index: libnautilus-private/nautilus-tree-view-drag-dest.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-tree-view-drag-dest.c,v retrieving revision 1.14 diff -u -p -r1.14 nautilus-tree-view-drag-dest.c --- libnautilus-private/nautilus-tree-view-drag-dest.c 27 Feb 2006 21:54:58 -0000 1.14 +++ libnautilus-private/nautilus-tree-view-drag-dest.c 22 Jun 2006 19:53:31 -0000 @@ -306,7 +306,7 @@ get_drop_path (NautilusTreeViewDragDest NautilusFile *file; GtkTreePath *ret; - if (!path) { + if (!path || !dest->details->have_drag_data) { return NULL; } @@ -315,7 +315,9 @@ get_drop_path (NautilusTreeViewDragDest /* Go up the tree until we find a file that can accept a drop */ while (file == NULL /* dummy row */ || - !nautilus_drag_can_accept_items (file, dest->details->drag_list)) { + !nautilus_drag_can_accept_info (file, + dest->details->drag_type, + dest->details->drag_list)) { if (gtk_tree_path_get_depth (ret) == 1) { gtk_tree_path_free (ret); ret = NULL; @@ -333,8 +335,8 @@ get_drop_path (NautilusTreeViewDragDest } static char * -get_drop_target (NautilusTreeViewDragDest *dest, - GtkTreePath *path) +get_drop_target_uri_for_path (NautilusTreeViewDragDest *dest, + GtkTreePath *path) { NautilusFile *file; char *target; @@ -366,7 +368,7 @@ get_drop_action (NautilusTreeViewDragDes switch (dest->details->drag_type) { case NAUTILUS_ICON_DND_GNOME_ICON_LIST : - drop_target = get_drop_target (dest, path); + drop_target = get_drop_target_uri_for_path (dest, path); if (!drop_target) { return 0; @@ -383,9 +385,27 @@ get_drop_action (NautilusTreeViewDragDes return action; case NAUTILUS_ICON_DND_URL: - return nautilus_drag_default_drop_action_for_url (context); + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + action = nautilus_drag_default_drop_action_for_url (context); + + g_free (drop_target); + + return action; case NAUTILUS_ICON_DND_URI_LIST : + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + g_free (drop_target); + return context->suggested_action; case NAUTILUS_ICON_DND_TEXT: @@ -497,24 +517,43 @@ drag_leave_callback (GtkWidget *widget, remove_expand_timeout (dest); } -static void -receive_uris (NautilusTreeViewDragDest *dest, - GdkDragContext *context, - GList *source_uris, - int x, int y) +static char * +get_drop_target_uri_at_pos (NautilusTreeViewDragDest *dest, int x, int y) { char *drop_target; GtkTreePath *path; GtkTreePath *drop_path; GtkTreeViewDropPosition pos; - GdkDragAction action; gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, &path, &pos); drop_path = get_drop_path (dest, path); - drop_target = get_drop_target (dest, drop_path); + drop_target = get_drop_target_uri_for_path (dest, drop_path); + + if (path != NULL) { + gtk_tree_path_free (path); + } + + if (drop_path != NULL) { + gtk_tree_path_free (drop_path); + } + + return drop_target; +} + +static void +receive_uris (NautilusTreeViewDragDest *dest, + GdkDragContext *context, + GList *source_uris, + int x, int y) +{ + char *drop_target; + GdkDragAction action; + + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); if (context->action == GDK_ACTION_ASK) { if (nautilus_drag_selection_includes_special_link (dest->details->drag_list)) { @@ -540,14 +579,6 @@ receive_uris (NautilusTreeViewDragDest * x, y); } - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target); } @@ -583,14 +614,22 @@ receive_dropped_uri_list (NautilusTreeVi GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URI_LIST], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -598,18 +637,24 @@ receive_dropped_text (NautilusTreeViewDr GdkDragContext *context, int x, int y) { + char *drop_target; char *text; if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + text = gtk_selection_data_get_text (dest->details->drag_data); g_signal_emit (dest, signals[HANDLE_TEXT], 0, - (char *) text, + (char *) text, drop_target, context->action, x, y); + g_free (text); + g_free (drop_target); } @@ -618,14 +663,22 @@ receive_dropped_url (NautilusTreeViewDra GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URL], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -634,15 +687,14 @@ receive_dropped_keyword (NautilusTreeVie int x, int y) { char *drop_target_uri; - GtkTreePath *path, *drop_path; NautilusFile *drop_target_file; - gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, - &path, NULL); - - drop_path = get_drop_path (dest, path); + if (!dest->details->drag_data) { + return; + } - drop_target_uri = get_drop_target (dest, drop_path); + drop_target_uri = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target_uri != NULL); drop_target_file = nautilus_file_get (drop_target_uri); @@ -652,15 +704,6 @@ receive_dropped_keyword (NautilusTreeVie nautilus_file_unref (drop_target_file); } - - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target_uri); } @@ -854,8 +897,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -867,8 +911,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -880,8 +925,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.745 diff -u -p -r1.745 fm-directory-view.c --- src/file-manager/fm-directory-view.c 16 Jun 2006 15:40:18 -0000 1.745 +++ src/file-manager/fm-directory-view.c 22 Jun 2006 20:08:33 -0000 @@ -1415,7 +1415,7 @@ action_new_empty_file_callback (GtkActio { g_assert (FM_IS_DIRECTORY_VIEW (callback_data)); - fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL); + fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL, NULL); } static void @@ -4217,36 +4217,45 @@ setup_new_folder_data (FMDirectoryView * static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, + const char *parent_uri, const char *initial_contents) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; + + g_assert (parent_uri != NULL); data = setup_new_folder_data (directory_view); pos = context_menu_to_file_operation_position (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), pos, parent_uri, initial_contents, new_folder_done, data); - - g_free (parent_uri); } void fm_directory_view_new_file (FMDirectoryView *directory_view, + const char *parent_uri, NautilusFile *source) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; char *source_uri; + char *container_uri; + + container_uri = NULL; + if (parent_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (directory_view); + g_assert (container_uri != NULL); + } if (source == NULL) { - fm_directory_view_new_file_with_initial_contents (directory_view, NULL); + fm_directory_view_new_file_with_initial_contents (directory_view, + parent_uri != NULL ? parent_uri : container_uri, + NULL); + g_free (container_uri); return; } @@ -4257,17 +4266,16 @@ fm_directory_view_new_file (FMDirectoryV data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), pos, - parent_uri, + parent_uri != NULL ? parent_uri : container_uri, NULL, source_uri, new_folder_done, data); - g_free (parent_uri); g_free (source_uri); + g_free (container_uri); } /* handle the open command */ @@ -4782,7 +4790,8 @@ extension_action_callback_data_free (Ext { g_object_unref (data->item); nautilus_file_list_free (data->selection); - + g_object_unref (data->view); + g_free (data); } @@ -4826,6 +4835,12 @@ extension_action_slow_mime_types_ready_c g_free (item_name); if (is_valid) { + char *display; + + display = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (data->view))); + g_setenv ("DISPLAY", display, TRUE); + g_free (display); + nautilus_menu_item_activate (data->item); } @@ -4890,7 +4905,7 @@ add_extension_action_for_files (FMDirect data = g_new0 (ExtensionActionCallbackData, 1); data->item = g_object_ref (item); - data->view = view; + data->view = g_object_ref (view); data->selection = nautilus_file_list_copy (files); data->action = action; @@ -5567,7 +5582,7 @@ create_template_callback (GtkAction *act parameters = callback_data; - fm_directory_view_new_file (parameters->directory_view, parameters->file); + fm_directory_view_new_file (parameters->directory_view, NULL, parameters->file); } static void @@ -9632,6 +9647,7 @@ ask_link_action (FMDirectoryView *view) void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9652,10 +9668,13 @@ fm_directory_view_handle_url_drop (FMDir return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } - if (eel_vfs_has_capability (container_uri, + if (eel_vfs_has_capability (target_uri != NULL ? target_uri : container_uri, EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) { eel_show_warning_dialog (_("Drag and drop is not supported."), _("Drag and drop is only supported on local file systems."), @@ -9736,7 +9755,7 @@ fm_directory_view_handle_url_drop (FMDir screen = gtk_widget_get_screen (GTK_WIDGET (view)); screen_num = gdk_screen_get_number (screen); - nautilus_link_local_create (container_uri, + nautilus_link_local_create (target_uri != NULL ? target_uri : container_uri, link_name, link_display_name, "gnome-fs-bookmark", @@ -9758,7 +9777,7 @@ fm_directory_view_handle_url_drop (FMDir uri_list = g_list_append (uri_list, url); fm_directory_view_move_copy_items (uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); g_list_free (uri_list); @@ -9773,6 +9792,7 @@ fm_directory_view_handle_url_drop (FMDir void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9787,8 +9807,11 @@ fm_directory_view_handle_uri_list_drop ( return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } if (action == GDK_ACTION_ASK) { action = nautilus_drag_drop_action_ask @@ -9847,7 +9870,7 @@ fm_directory_view_handle_uri_list_drop ( } fm_directory_view_move_copy_items (real_uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); eel_g_list_free_deep (real_uri_list); @@ -9861,6 +9884,7 @@ fm_directory_view_handle_uri_list_drop ( void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9873,11 +9897,14 @@ fm_directory_view_handle_text_drop (FMDi g_return_if_fail (action == GDK_ACTION_COPY); - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } fm_directory_view_new_file_with_initial_contents ( - view, text); + view, target_uri != NULL ? target_uri : container_uri, text); g_free (container_uri); } Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.144 diff -u -p -r1.144 fm-directory-view.h --- src/file-manager/fm-directory-view.h 30 Mar 2006 19:37:22 -0000 1.144 +++ src/file-manager/fm-directory-view.h 22 Jun 2006 20:08:34 -0000 @@ -404,21 +404,25 @@ gboolean fm_directory_view_should_so void fm_directory_view_update_menus (FMDirectoryView *view); void fm_directory_view_new_folder (FMDirectoryView *view); void fm_directory_view_new_file (FMDirectoryView *view, + const char *parent_uri, NautilusFile *source); void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view); void fm_directory_view_init_view_iface (NautilusViewIface *iface); void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y); Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.323 diff -u -p -r1.323 fm-icon-view.c --- src/file-manager/fm-icon-view.c 15 May 2006 22:55:25 -0000 1.323 +++ src/file-manager/fm-icon-view.c 22 Jun 2006 20:08:41 -0000 @@ -553,7 +553,8 @@ fm_icon_view_add_file (FMDirectoryView * if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2077,7 +2078,8 @@ fm_icon_view_screen_changed (GtkWidget * } else { if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2527,26 +2529,29 @@ create_icon_container (FMIconView *icon_ /* Handles an URL received from Mozilla */ static void icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void icon_view_handle_uri_list (NautilusIconContainer *container, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void icon_view_handle_text (NautilusIconContainer *container, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static char * Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.270 diff -u -p -r1.270 fm-list-view.c --- src/file-manager/fm-list-view.c 24 May 2006 13:20:42 -0000 1.270 +++ src/file-manager/fm-list-view.c 22 Jun 2006 20:08:47 -0000 @@ -1044,26 +1044,28 @@ get_file_for_path_callback (NautilusTree /* Handles an URL received from Mozilla */ static void list_view_handle_url (NautilusTreeViewDragDest *dest, const char *encoded_url, - GdkDragAction action, int x, int y, FMListView *view) + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void list_view_handle_uri_list (NautilusTreeViewDragDest *dest, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void list_view_handle_text (NautilusTreeViewDragDest *dest, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static void --=-wko5hNaIXKFzt/OLy/jx-- From gcgn-nautilus-list@m.gmane.org Fri Jun 23 20:50:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1A1653B016A for ; Fri, 23 Jun 2006 20:50:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14245-10 for ; Fri, 23 Jun 2006 20:50:09 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id D85B93B00E5 for ; Fri, 23 Jun 2006 20:50:08 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FtwLa-00040A-JD for nautilus-list@gnome.org; Sat, 24 Jun 2006 02:50:02 +0200 Received: from grenadine.bebeloup.net ([82.66.18.21]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 Received: from bdelaage by grenadine.bebeloup.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Boris de Laage Subject: [PATCH] nautilus-vcs: use the C locale for LC_TIME with strftime Date: Sat, 24 Jun 2006 02:46:54 +0200 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: grenadine.bebeloup.net User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.145 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_SORBS_WEB=1.456, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -1.145 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 00:50:10 -0000 strftime formats the string according to the current locale, while CVS timestamps are in english. This patch changes the LC_TIME locale before calling strftime. Boris. Index: nautilus-cvs.c =================================================================== RCS file: /cvs/gnome/nautilus-vcs/src/nautilus-cvs.c,v retrieving revision 1.8 diff -u -r1.8 nautilus-cvs.c --- nautilus-cvs.c 19 Nov 2004 18:18:19 -0000 1.8 +++ nautilus-cvs.c 6 Dec 2005 16:29:12 -0000 @@ -128,8 +128,11 @@ struct tm mtime; const GnomeVFSFileInfo *info; char timestamp[512]; + char *locale; + info = nautilus_file_info_get_vfs_file_info (file); + locale = setlocale(LC_TIME, "C"); gmtime_r (&info->mtime, &mtime); if (strftime (timestamp, 512, "%a %b %e %H:%M:%S %Y", @@ -138,6 +141,7 @@ ret = TRUE; } } + setlocale(LC_TIME, locale); } return ret; From alexgearhart@gmail.com Sat Jun 24 02:03:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C39E83B01BF for ; Sat, 24 Jun 2006 02:03:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26437-02 for ; Sat, 24 Jun 2006 02:03:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by menubar.gnome.org (Postfix) with ESMTP id 7481E3B0303 for ; Sat, 24 Jun 2006 02:03:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so156334uge for ; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.140.17 with SMTP id n17mr1525570hud; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.31.6 with HTTP; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Message-ID: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Date: Sat, 24 Jun 2006 02:03:15 -0400 From: "Alex Gearhart" To: nautilus-list@gnome.org Subject: Folder size column MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_33481_11872762.1151128995549" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.91 tagged_above=-999 required=2 tests=[BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -0.91 X-Spam-Level: X-Mailman-Approved-At: Sat, 24 Jun 2006 10:45:26 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 06:03:19 -0000 ------=_Part_33481_11872762.1151128995549 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hey, the folder size column should display the size of the folder, and not how many files are inside. Then it would be easier to see how much space all your folders take up. Instead, the number of files inside should be in a column like "Contents." Thanks, Alex ------=_Part_33481_11872762.1151128995549 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hey, the folder size column should display the size of the folder, and not how many files are inside.   Then it would be easier to see how much space all your folders take up.  Instead, the number of files inside should be in a column like "Contents."

 

Thanks,
Alex

------=_Part_33481_11872762.1151128995549-- From gcgn-nautilus-list@m.gmane.org Sat Jun 24 13:15:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id EA1233B0385 for ; Sat, 24 Jun 2006 13:15:45 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26732-06 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 6D41A3B0121 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FuBio-0007D2-A1 for nautilus-list@gnome.org; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: support truncated long file name? Date: Sat, 24 Jun 2006 18:08:39 +0100 Lines: 30 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:pg4guGpKutI95x3CB8skWP4y+YE= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:15:46 -0000 Dear all, A missing feature in nautilus is truncated long file name. Imagine opening a dir with a lot of long file names such as a dir containing papers that have title as the file name, which a lot academic workers will do. How messy and inconvenient that is! Lately a colleague, a first-time gnome user, has asked for help to configure his nautilus to show tidily a dir of books that he collected. Unfortunately no one could give an answer. He has then been persuaded to change to KDE. As a gnome user for 4 years, I hate to see people leave gnome this way and thus this post. In case you can't try konqueror or xp explorer, here is the feature: In konqueror or xp explorer, long file name will be truncated with ... to indicate the missing part. A popup will show the full file name when mouse is over the item. (Konqueror has this feature for over 2 years) Files in the desktop are treated differently. Full file name is shown for selected item. This feature is available in xp. Apology for my English. Thanks for your time. -- Leon From mpt@myrealbox.com Sat Jun 24 21:32:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 854743B024B for ; Sat, 24 Jun 2006 21:32:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11780-10 for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from leucothea.redline.site5.com (leucothea.redline.site5.com [216.118.97.161]) by menubar.gnome.org (Postfix) with ESMTP id 7AD453B01DD for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from 203-173-178-53.bliink.ihug.co.nz ([203.173.178.53] helo=[10.1.1.5]) by leucothea.redline.site5.com with esmtpsa (TLSv1:RC4-SHA:128) (Exim 4.52) id 1FuJSn-0001jv-Pt; Sat, 24 Jun 2006 21:31:02 -0400 In-Reply-To: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> References: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <1e87f7c2959ea7bc5dbc264d3a1d94c0@myrealbox.com> Content-Transfer-Encoding: quoted-printable From: Matthew Paul Thomas Subject: Re: Folder size column Date: Sun, 25 Jun 2006 13:31:05 +1200 To: nautilus-list List X-Mailer: Apple Mail (2.623) X-Antivirus-Scanner: This message has been scanned by ClamAV. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leucothea.redline.site5.com X-AntiAbuse: Original Domain - gnome.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - myrealbox.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=0.123, BAYES_00=-2.599] X-Spam-Score: -2.476 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 01:32:02 -0000 On Jun 24, 2006, at 6:03 PM, Alex Gearhart wrote: > > Hey, the folder size column should display the size of the folder, and=20= > not how many files are inside. =A0 Then it would be easier to see how=20= > much space all your folders take up.=A0 Instead, the number of files=20= > inside should be in a column like "Contents." > ... You can subscribe to the relevant bug report to be notified of progress=20= in fixing the bug. Cheers --=20 Matthew Paul Thomas http://mpt.net.nz/= From reinouts@gnome.org Sun Jun 25 04:59:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 45E3C3B02C9 for ; Sun, 25 Jun 2006 04:59:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06259-07 for ; Sun, 25 Jun 2006 04:59:28 -0400 (EDT) Received: from smtp13.wxs.nl (smtp13.wxs.nl [195.121.247.4]) by menubar.gnome.org (Postfix) with ESMTP id E0E423B01C5 for ; Sun, 25 Jun 2006 04:59:27 -0400 (EDT) Received: from reinout.rotterdam-cs.com (ip5656924e.speed.planet.nl [86.86.146.78]) by smtp13.wxs.nl (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with SMTP id <0J1E00KI7RLCUO@smtp13.wxs.nl> for nautilus-list@gnome.org; Sun, 25 Jun 2006 10:58:24 +0200 (CEST) Date: Sun, 25 Jun 2006 11:01:02 +0200 From: Reinout van Schouwen Subject: Re: support truncated long file name? To: nautilus-list@gnome.org Message-id: MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) References: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.449 tagged_above=-999 required=2 tests=[AWL=0.015, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.449 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 08:59:31 -0000 Hi Leon, On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > Lately a colleague, a first-time gnome user, has asked for help to > configure his nautilus to show tidily a dir of books that he collected. How did the long filenames cause "untidiness" then? Was he using list view or icon view? > Unfortunately no one could give an answer. He has then been persuaded to > change to KDE. That sounds like a rigorous solution for a relatively insignificant problem, but at least he is still using Free software :-). > In konqueror or xp explorer, long file name will be truncated with ... > to indicate the missing part. A popup will show the full file name when > mouse is over the item. (Konqueror has this feature for over 2 years) Popup tooltips in the GTK tree/list widget are not possible in the current stable releases, however I think they will be part of the upcoming GTK 2.10. I agree that it would be good to use ellipsis (...) for filenames that do not fit in their column, could you file a bug about this at http://bugzilla.gnome.org/ so that the developers don't forget about it? regards, -- Reinout van Schouwen From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request. See you. -- Manuel Clos, llanero@jazzfree.com use what's best for you. Don't use what you feel you "have" to. From james@pharaohsystems.com Fri Jun 2 05:47:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2368D3B02C0 for ; Fri, 2 Jun 2006 05:47:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15548-06 for ; Fri, 2 Jun 2006 05:47:36 -0400 (EDT) Received: from lan.apnuk.com (lan.apnuk.com [212.50.185.139]) by menubar.gnome.org (Postfix) with SMTP id 5004E3B10A9 for ; Fri, 2 Jun 2006 05:47:35 -0400 (EDT) Received: (qmail 26337 invoked from network); 2 Jun 2006 09:47:32 -0000 Received: from unknown (HELO apollo.leeds.apnuk.com) (10.5.30.2) by vulpine.leeds.apnuk.com with SMTP; 2 Jun 2006 09:47:32 -0000 From: James Pharaoh To: nautilus-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-07kukkHUo3K+dfnSUGad" Date: Fri, 02 Jun 2006 10:49:00 +0100 Message-Id: <1149241741.11467.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 02 Jun 2006 13:45:59 -0400 Subject: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 09:47:38 -0000 --=-07kukkHUo3K+dfnSUGad Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I like being able to give folders icons in Nautilus but the "metadata" method is not much use because it is difficult to copy with the folder if I don't use Nautilus to copy it. I'd like to be able to stick a file, say ".nautilus-folder-icon" in the directory to set a default icon, obviously this would be overridden by any metadata icon set. In fact, the name of the file could be set in gconf and this could turn the option on. I assume this wouldn't be too hard to do, I'd like to have a go myself but would appreciate a few hints from someone who knows where to look in the code. Thanks, James --=-07kukkHUo3K+dfnSUGad Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEgAmMOov9Pl/is1ERAjYHAKCHw/iPWN55VZBzbRSsif0Q5YQOeQCfRp1k ttjF+6rSt545Z6oKNuRada0= =ftMn -----END PGP SIGNATURE----- --=-07kukkHUo3K+dfnSUGad-- From patrick.jacquotf@free.fr Fri Jun 2 13:59:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AB21E3B0170 for ; Fri, 2 Jun 2006 13:59:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12964-10 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 759E43B0176 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 5E8A647E61; Fri, 2 Jun 2006 19:59:08 +0200 (CEST) From: Patrick Jacquot To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jun 2006 19:58:55 +0200 Message-Id: <1149271136.8687.44.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.011, BAYES_00=-2.599] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 17:59:13 -0000 Le vendredi 02 juin 2006 à 10:49 +0100, James Pharaoh a écrit : > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. > > Thanks, > > James Maybe adding emblems to the folder icons could achieve what you want. Those emblems superimpose themselves over the folder icon, you can have a folder with a yellow star superimposed, another one with a rocket superimposed and so on. I devised a small utility to be able to add such emblems to a directory icon (or a file icon) from the command line (or from a script) See the chemb project on sourceforge -- Patrick From sacha@forty2.be Fri Jun 2 15:05:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 50A4B3B0E50 for ; Fri, 2 Jun 2006 15:05:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17528-06 for ; Fri, 2 Jun 2006 15:05:55 -0400 (EDT) Received: from adicia.telenet-ops.be (adicia.telenet-ops.be [195.130.132.56]) by menubar.gnome.org (Postfix) with ESMTP id 955E03B0A09 for ; Fri, 2 Jun 2006 15:05:47 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by adicia.telenet-ops.be (Postfix) with SMTP id 3A604705D0 for ; Fri, 2 Jun 2006 21:05:46 +0200 (CEST) Received: from romulus.local (dD5E02B5C.access.telenet.be [213.224.43.92]) by adicia.telenet-ops.be (Postfix) with ESMTP id F3AA0705F6 for ; Fri, 2 Jun 2006 21:05:45 +0200 (CEST) From: Sacha Vandenbroeck To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 02 Jun 2006 21:05:50 +0100 Message-Id: <1149278750.14015.9.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Dropline GNOME Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.395 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.395 X-Spam-Level: X-Mailman-Approved-At: Sat, 03 Jun 2006 08:07:21 -0400 Subject: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 19:05:56 -0000 I posted a Nautilus bug, but now ofcourse the developers need a backtrace of this crash. But how do I do this? I have to compile nautilus myself so I tried to do this with the "--enable-debug" option and then tried to get a backtrace with gdb (following the instructions at this link https://wiki.ubuntu.com/Backtrace ) but I still can't get a full backtrace. I don't get the "no debugging symbols found" messages, but still the backtrace is as useless as before. So how do I build nautilus to debug it? I'm sorry if this sounds silly, but I never tried this before and there is almost no information in human language on this topic (I'm not a developer myself but still I want to help make Gnome better). From seb128@debian.org Sat Jun 3 08:52:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDCC33B05AB for ; Sat, 3 Jun 2006 08:52:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03672-09 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from smtp7.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.24]) by menubar.gnome.org (Postfix) with ESMTP id 8BBB13B05D6 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from [192.168.0.2] (ANancy-151-1-75-89.w81-50.abo.wanadoo.fr [81.50.153.89]) by mwinf0706.orange.fr (SMTP Server) with ESMTP id 068A41C0008D for ; Sat, 3 Jun 2006 14:52:36 +0200 (CEST) X-ME-UUID: 20060603125237268.068A41C0008D@mwinf0706.orange.fr From: Sebastien Bacher To: nautilus-list@gnome.org In-Reply-To: <1149278750.14015.9.camel@localhost> References: <1149278750.14015.9.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15 Date: Sat, 03 Jun 2006 14:52:31 +0200 Message-Id: <1149339151.5915.0.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.526 tagged_above=-999 required=2 tests=[AWL=0.073, BAYES_00=-2.599] X-Spam-Score: -2.526 X-Spam-Level: Subject: Re: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 12:52:41 -0000 Le vendredi 02 juin 2006 à 21:05 +0100, Sacha Vandenbroeck a écrit : > I posted a Nautilus bug, but now ofcourse the developers need a > backtrace of this crash. But how do I do this? I have to compile > nautilus myself Hi, No need to build a debug package, just "apt-get install nautilus-dbg" Cheers, Sebastien Bacher From mark.kegel@gmail.com Sat Jun 3 12:08:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 7138E3B0702 for ; Sat, 3 Jun 2006 12:08:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14511-09 for ; Sat, 3 Jun 2006 12:08:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by menubar.gnome.org (Postfix) with ESMTP id 144503B05AE for ; Sat, 3 Jun 2006 12:08:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so815420uge for ; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=W3JRAemVm7OT3HZt2c9RWshzsIBh1m2jBCk+XhCdQhCGtf2oEFpImrEbBnTXY1DChmA46aVlKGGeltQrmOjjppin/uUnWUn1wFkAfVdppvvGeJ1suY0q6OhYugz4aF93JKNrMlbKo2m1+WD50q1Q+pc2WLm4FHQNnkoCAPnIwGs= Received: by 10.67.97.7 with SMTP id z7mr1786225ugl; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) Received: by 10.66.254.18 with HTTP; Sat, 3 Jun 2006 09:08:16 -0700 (PDT) Message-ID: <8a5993840606030908n9df00b8k8cdfb555b95c3dbe@mail.gmail.com> Date: Sat, 3 Jun 2006 10:08:16 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.042 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_BL_SPAMCOP_NET=1.558, SPF_PASS=-0.001] X-Spam-Score: -1.042 X-Spam-Level: X-Mailman-Approved-At: Sun, 04 Jun 2006 08:36:32 -0400 Subject: volumes not showing in nautilus X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 16:08:18 -0000 I've been running gnome 2.14 for about two weeks now and am very pleased with it. Unfortunately, nautilus isn't showing the partitions I have mounted, as it did in 2.12. I've set the appropriate settings with gconf (at least I think I have) with no luck. Anyone have any ideas or pointers to a solution? Mark Kegel From xclaesse@gmail.com Mon Jun 5 05:57:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 994D93B031D; Mon, 5 Jun 2006 05:57:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20358-05; Mon, 5 Jun 2006 05:56:59 -0400 (EDT) Received: from outmx026.isp.belgacom.be (outmx026.isp.belgacom.be [195.238.4.91]) by menubar.gnome.org (Postfix) with ESMTP id 5AEF03B00CE; Mon, 5 Jun 2006 05:56:58 -0400 (EDT) Received: from outmx026.isp.belgacom.be (localhost [127.0.0.1]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559upxm015348; Mon, 5 Jun 2006 11:56:51 +0200 (envelope-from ) Received: from [10.0.0.3] (244-16.241.81.adsl.skynet.be [81.241.16.244]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559ulet015294; Mon, 5 Jun 2006 11:56:48 +0200 (envelope-from ) From: Xavier Claessens To: Christian Neumair In-Reply-To: <1147197585.5045.11.camel@localhost> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-nAeSl/tN81bv5MmP9h9B" Date: Mon, 05 Jun 2006 11:56:49 +0200 Message-Id: <1149501410.7231.27.camel@zdra-desktop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.999 tagged_above=-999 required=2 tests=[AWL=-0.469, BAYES_00=-2.599, SPF_NEUTRAL=1.069] X-Spam-Score: -1.999 X-Spam-Level: Cc: Mark McLoughlin , Vincent Untz , "nautilus-list@gnome.org" Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 09:57:01 -0000 --=-nAeSl/tN81bv5MmP9h9B Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Le mardi 09 mai 2006 =C3=A0 19:59 +0200, Xavier Claessens a =C3=A9crit : > Le mardi 09 mai 2006 =C3=A0 18:59 +0200, Christian Neumair a =C3=A9crit : > > Am Dienstag, den 09.05.2006, 10:25 +0200 schrieb Xavier Claessens: > > > Le mardi 09 mai 2006 =C3=A0 10:01 +0200, Christian Neumair a =C3=A9cr= it : > > > > > For volume icons from the desktop, is it possible to make it work= like > > > > > in computer:/// ? nautilus should generate on-the-fly same .drive= files. > > > > > Like that we are sure that at least icons from desktop and from > > > > > computer:/// react the same way. > > > >=20 > > > > Passing around on-the-fly generated files (which would have to be p= ut > > > > into file:///tmp) isn't a good idea IMHO, because it requires sniff= ing > > > > foreach passed-in URI. My proposal tried to address the fact that s= ome > > > > applications are interested in volumes or drives but not in their > > > > corresponding files, since the actual volume/drive data can be quer= ied > > > > from the volume monitor. > > >=20 > > > Ok. So computer:/// should works like x-nautilus-desktop:/// and > > > nautilus should never use the on-the-fly generated .drive files. Like > > > that most problems are solved because icons from desktop aren't accep= ted > > > for dropping anywhere. > >=20 > > No, it doesn't solve the problem, because - as you pointed out - not > > doing anything isn't really user-friendly either. IMHO it would be the > > best to operate on the drive's activation URI when dropping a volume or > > drive file to another folder. >=20 > As I understand we have currently 2 representations possible for a > drive/volume icon in nautilus. One for computer:/// and another for > x-nautilus-desktop:///. So I think the first step is to have only one > representation. We should only use the first or the second or maybe > another system which will replace the two. >=20 > So my question is: we should use computer:/// representation for > x-nautilus-desktop:/// ? Or the reverse ? or something else ? >=20 > When we have one single representation we should patch other > applications (including gnome-panel and nautilus itself) to accept in > one way or another DnD of this representation. >=20 > Xavier Claessens. >=20 So what can we do now for GNOME 2.15 ? I think nautilus should really have a common way handling drives/volumes files. Here is an example of *really* bad design: zdra@zdra-desktop:~/programmation/gnome/nautilus$ grep -r "eject_for_type (GnomeVFSDeviceType type)" * libnautilus-private/nautilus-desktop-link-monitor.c:eject_for_type (GnomeVFSDeviceType type) src/nautilus-places-sidebar.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-directory-view.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-tree-view.c:eject_for_type (GnomeVFSDeviceType type) Yes this basic function is defined 4 times in different files ! There is also functions like the one which says if an GnomeVFSDrive should have a "eject", "unmount", "format",etc popup menu option which is copy/pasted everywhere in nautilus. So what I propose is adding some objects to libnautilus-private to have a common way handling Drive and Volume files. In the same way of nautilus_destkop_* we can make something like nautilus_volume_file and nautilus_drive_file which would be used to computer:///, x-nautilus-desktop:///,etc. On this objects we can have methods like gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); to replace the eject_for_type(). And void nautilus_volume_file_get_options (NautilusDriveFile*, gboolean *show_mount, gboolean *show_unmount, gboolean *show_eject, gboolean *show_format); To know which options we can show for this file. I don't know exactly how all that can work and if that's a good idea but I can work on it this summer. I'll experiment some patches as soon as my exams finishes. I would be happy to have comments on this. Xavier Claessens. --=-nAeSl/tN81bv5MmP9h9B Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEg//h6dEBUn2qPAMRAtmXAKCB3U3DFjVEGjbAazBKl7zNZwTUFQCgjxxd +HMH0MmP9vv41UqLjYgldaE= =BuCn -----END PGP SIGNATURE----- --=-nAeSl/tN81bv5MmP9h9B-- From jamesat@comcast.net Wed Jun 7 07:38:09 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 70A7B3B0C14 for ; Wed, 7 Jun 2006 07:38:09 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07291-05 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [63.240.77.85]) by menubar.gnome.org (Postfix) with ESMTP id 61B153B0C89 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from [10.10.10.51] (c-66-31-77-146.hsd1.nh.comcast.net[66.31.77.146]) by comcast.net (sccrmhc15) with SMTP id <2006060711380501500ch6mte>; Wed, 7 Jun 2006 11:38:05 +0000 From: James Tremblay To: nautilus-list@gnome.org Content-Type: text/plain Date: Wed, 07 Jun 2006 07:37:40 -0400 Message-Id: <1149680260.8506.2.camel@sled10.liberty> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: Yes, score=2.415 tagged_above=-999 required=2 tests=[BAYES_20=-0.74, DNS_FROM_RFC_POST=1.708, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: 2.415 X-Spam-Level: ** X-Spam-Flag: YES Subject: connectivity issues X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 11:38:09 -0000 is there any plan to integrate standards based slp services to Nautilus. this is a ridiculous question to ask of a modern network browser but i'm asking cuz it's needed! From sivan@ubuntu.com Wed Jun 7 14:39:47 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 663863B0546 for ; Wed, 7 Jun 2006 14:39:47 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05495-10 for ; Wed, 7 Jun 2006 14:39:44 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id BF82C3B069F for ; Wed, 7 Jun 2006 14:39:43 -0400 (EDT) Received: from bzq-84-108-224-57.cablep.bezeqint.net (bzq-84-108-224-57.cablep.bezeqint.net [84.108.224.57]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BC32D44DD for ; Wed, 7 Jun 2006 20:39:36 +0200 (CEST) From: Sivan Greenberg To: nautilus-list@gnome.org In-Reply-To: <1149074455.5848.7.camel@localhost> References: <1149074455.5848.7.camel@localhost> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 07 Jun 2006 21:39:32 +0300 Message-Id: <1149705572.8926.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.369 tagged_above=-999 required=2 tests=[AWL=0.095, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.369 X-Spam-Level: Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 18:39:47 -0000 Hi Again, the wonderful users and hacker of nautilus. I would like to bring your attention again to a patch I have created originally using pure gnome_vfs functions to check if the source's parent is read only, and if so default to a copy operation instead of a move operation which previously caused hassle, confusing and much mess among especially converts from other operating system, as to why "Such a trivial operation needs to involve hassle and why do I even need to think about it and select copy from the context menu??" etc.. ;-) So after realizing this patch is not good enough, due to it being inside a callback which gets called multiple times per each DND operation, Manny on the irc channel proposed I use instead of the native gnome-vfs methods, the nautilus infras. for file manipulation (to check if the source uri's parent is read only) , namely libnautilus-private/nautilus-file.h::nautilus_file_get_existing and libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info Now my question is, should I get a new patch in the same a approach of the previous one (which actually followed another patch approach, from the file ownership bug) but with the this time cache enabled functions of nautilus-file.h, will this be accepted by the upstream maintainers? I would hate to start work on it, just to realize I need to re-do it again. Many thanks, and apologies for the spam :) Sivan On Wed, 2006-05-31 at 14:20 +0300, Sivan Green wrote: > Hi List! > > As I have been experiencing this bug for quite some time long, and been > bitched my converts that this is such a minimal thing for an "OS" to > know to do, I have decided to write a patch for it myself. > > My patch basically adds another check before deciding on a "move" > operation, in a similar way to what [1] is already doing, and as such, > [1] must be applied before [2] can be applied to achieve the fix. > > This is already scheduled for dapper-updates, but I would love to see it > fixed upstream as well, for benefit of other distros who have reported > this issue. (has also bee spotted in Fedora) > > Many Thanks! > > Cheers, > > Sivan > > [1]: http://bugzilla.gnome.org/attachment.cgi?id=63939&action=view > [2]: http://bugzilla.gnome.org/attachment.cgi?id=66519 From promac@gmail.com Thu Jun 8 22:12:37 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 00AED3B0108 for ; Thu, 8 Jun 2006 22:12:37 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20139-03 for ; Thu, 8 Jun 2006 22:12:36 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.200]) by menubar.gnome.org (Postfix) with ESMTP id 3902E3B0118 for ; Thu, 8 Jun 2006 22:12:35 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so556444wxd for ; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k8WPqufouETdhytWFOCSGqDBX6Uww6u/gx9GEiZfqGDansyu/0GfgVJyWff6v5Bes6Maf8ZS2LgMrkJjT8mpXVazDoz6ic2fs6ad7faacc72ctSOSMCMi0jOeU6u9dS8t246PH01NSDAEkqr+nztxZGQI1j/y8aqMs+P7Y/+/5Y= Received: by 10.70.36.1 with SMTP id j1mr2903510wxj; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Thu, 8 Jun 2006 19:12:34 -0700 (PDT) Message-ID: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Date: Thu, 8 Jun 2006 23:12:34 -0300 From: "Paulo Cavalcanti" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19117_24627930.1149819154508" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.588 tagged_above=-999 required=2 tests=[AWL=-0.340, BAYES_00=-2.599, HTML_10_20=1.351, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -1.588 X-Spam-Level: Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 02:12:37 -0000 ------=_Part_19117_24627930.1149819154508 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. ------=_Part_19117_24627930.1149819154508 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi,

I am having a problem with nautilus 2.10 from fedora 4.
Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When
I try to close the gnome session it hangs and I have to kill  X.

Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed.

Any suggestion would be greatly appriciated.

Thanks,

/Paulo Roma. ------=_Part_19117_24627930.1149819154508-- From nshmyrev@yandex.ru Fri Jun 9 01:48:25 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 740903B009A for ; Fri, 9 Jun 2006 01:48:25 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30793-01 for ; Fri, 9 Jun 2006 01:48:24 -0400 (EDT) Received: from tzec.mtu.ru (tzec.mtu.ru [195.34.34.228]) by menubar.gnome.org (Postfix) with ESMTP id DF3BF3B0014 for ; Fri, 9 Jun 2006 01:48:21 -0400 (EDT) Received: from gnome.local (ppp83-237-205-132.pppoe.mtu-net.ru [83.237.205.132]) by smtp.MTU.RU (Postfix) with ESMTP id 453E4488309; Fri, 9 Jun 2006 09:48:19 +0400 (MSD) (envelope-from nshmyrev@yandex.ru) From: "Nickolay V. Shmyrev" To: Paulo Cavalcanti In-Reply-To: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Date: Fri, 09 Jun 2006 09:48:27 +0400 Message-Id: <1149832107.2245.28.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.797 tagged_above=-999 required=2 tests=[AWL=-0.402, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.797 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 05:48:25 -0000 Ð’ Чтв, 08/06/2006 в 23:12 -0300, Paulo Cavalcanti пишет: > Hi, > > I am having a problem with nautilus 2.10 from fedora 4. > Since yesterday, it does not put any icon on the desktop, although it > is running. It is also using more than 95% of the CPU. When > I try to close the gnome session it hangs and I have to kill X. > > Everything else seems to be normal. I can login in kde with no problem > at all. I rebooted the computer many times and nothing has changed. > > Any suggestion would be greatly appriciated. > Without additional information it's hard to say what is going on. First of all, check xsession-error in /tmp if something is dumped to error log. Then try to run nautilus or gnome-session under strace and find the place where it hangs. You can try to debug it: with gdb you should login from console, attach to the nautilus with gdb --pid= and collect backtrace with "thread apply all bt" command. You need to install debug packages installed. From promac@gmail.com Fri Jun 9 05:58:16 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F0973B01CA for ; Fri, 9 Jun 2006 05:58:16 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13186-06 for ; Fri, 9 Jun 2006 05:58:15 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.192]) by menubar.gnome.org (Postfix) with ESMTP id B48E83B0770 for ; Fri, 9 Jun 2006 05:58:14 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so608500wxd for ; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mSed73zFvOJhdPHW9Yif+JRsWWePYb71KV3h3JbLoqieOWg+6Yppc95cWmUhw/d6gYdkEbxdgjXfPvh2Whim2HdNbRldY66mxmxKSYjrhQxGDzH6CThqyjhX0xhsPIHyr0JHiMJ7sCuR3o9gOYX55imhIyCq5ToVEXUKVKMdroE= Received: by 10.70.100.17 with SMTP id x17mr3293949wxb; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Fri, 9 Jun 2006 02:58:13 -0700 (PDT) Message-ID: <68720af30606090258r5658e239ga508c46495cf877b@mail.gmail.com> Date: Fri, 9 Jun 2006 06:58:14 -0300 From: "Paulo Cavalcanti" To: "Nickolay V. Shmyrev" In-Reply-To: <1149832107.2245.28.camel@gnome.local> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22870_26670651.1149847094006" References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> <1149832107.2245.28.camel@gnome.local> X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.842 tagged_above=-999 required=2 tests=[AWL=0.533, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.842 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 09:58:16 -0000 ------=_Part_22870_26670651.1149847094006 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5CgpJIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dpbmcgYW5k IGZvdW5kIHRoZSBwcm9ibGVtLgpJIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQgd2FzIGNhdXNl ZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZQpJJ3ZlIG1hZGUgaW4gZ3N0cmVhbWVyLTAuMTAu Cgpnc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1w bHVnaW5zLWJhc2UtMC4xMC43LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1kZXZl bC0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG0KZ3N0cmVhbWVyLXRvb2xzLTAuMTAuNi4yLTAu Z3N0LjEuNC5pMzg2LnJwbQpnc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLWRldmVsLTAuMTAuNy4y LTAuZ3N0LjEuNC5pMzg2LnJwbQoKSSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVs ZWFzZSBhbmQgbmF1dGlsdXMgaXMgc3RhcnRpbmcgYWdhaW4uCldoeSB3b3VsZCBuYXV0aWx1cyBk ZXBlbmQgb24gdGhpcyBjcmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3IKcmh5dGhtYm94LTAu OS4gImxkZCAvdXNyL2Jpbi9uYXV0aWx1cyIgZG9lcyBub3Qgc2hvdyBhbnkgZGVwZW5kZW5jeS4K CldoYXQgcGFydCBvZiBnbm9tZSBkb2VzIHVzZSBpdD8KClRoYW5rIHlvdSwgdmVyeSBtdWNoLgoK L1BhdWxvIFJvbWEuCgpPbiA2LzkvMDYsIE5pY2tvbGF5IFYuIFNobXlyZXYgPG5zaG15cmV2QHlh bmRleC5ydT4gd3JvdGU6Cj4KPiD3IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVs byBDYXZhbGNhbnRpINDJ28XUOgo+ID4gSGksCj4gPgo+ID4gSSBhbSBoYXZpbmcgYSBwcm9ibGVt IHdpdGggbmF1dGlsdXMgMi4xMCBmcm9tIGZlZG9yYSA0Lgo+ID4gU2luY2UgeWVzdGVyZGF5LCBp dCBkb2VzIG5vdCBwdXQgYW55IGljb24gb24gdGhlIGRlc2t0b3AsIGFsdGhvdWdoIGl0Cj4gPiBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo+ID4gSSB0cnkgdG8gY2xvc2UgdGhlIGdub21lIHNlc3Npb24gaXQgaGFuZ3MgYW5kIEkgaGF2 ZSB0byBraWxsICBYLgo+ID4KPiA+IEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBiZSBub3JtYWwu IEkgY2FuIGxvZ2luIGluIGtkZSB3aXRoIG5vIHByb2JsZW0KPiA+IGF0IGFsbC4gSSByZWJvb3Rl ZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQgbm90aGluZyBoYXMgY2hhbmdlZC4KPiA+Cj4g PiBBbnkgc3VnZ2VzdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLgo+ID4KPiBXaXRo b3V0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXQncyBoYXJkIHRvIHNheSB3aGF0IGlzIGdvaW5n IG9uLiBGaXJzdAo+IG9mIGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21l dGhpbmcgaXMgZHVtcGVkIHRvIGVycm9yCj4gbG9nLiBUaGVuIHRyeSB0byBydW4gbmF1dGlsdXMg b3IgZ25vbWUtc2Vzc2lvbiB1bmRlciBzdHJhY2UgYW5kIGZpbmQgdGhlCj4gcGxhY2Ugd2hlcmUg aXQgaGFuZ3MuCj4KPiBZb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDoKPgo+IHdpdGggZ2RiIHlvdSBz aG91bGQgbG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGgKPgo+ IGdkYiAtLXBpZD08bmF1dGlsdXNfcGlkPgo+Cj4gYW5kIGNvbGxlY3QgYmFja3RyYWNlIHdpdGgg InRocmVhZCBhcHBseSBhbGwgYnQiIGNvbW1hbmQuIFlvdSBuZWVkIHRvCj4gaW5zdGFsbCBkZWJ1 ZyBwYWNrYWdlcyBpbnN0YWxsZWQuCj4KPgo+Cg== ------=_Part_22870_26670651.1149847094006 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5PGJyPjxicj5JIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dp bmcgYW5kIGZvdW5kIHRoZSBwcm9ibGVtLjxicj5JIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQg d2FzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZTxicj5JJ3ZlIG1hZGUgaW4gZ3N0 cmVhbWVyLTAuMTAuPGJyPjxicj5nc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYu cnBtCjxicj5nc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLTAuMTAuNy4yLTAuZ3N0LjEuNC5pMzg2 LnJwbTxicj5nc3RyZWFtZXIwMTAtZGV2ZWwtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtPGJy PmdzdHJlYW1lci10b29scy0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG08YnI+Z3N0cmVhbWVy MDEwLXBsdWdpbnMtYmFzZS1kZXZlbC0wLjEwLjcuMi0wLmdzdC4xLjQuaTM4Ni5ycG0gPGJyPgo8 YnI+SSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVsZWFzZSBhbmQgbmF1dGlsdXMg aXMgc3RhcnRpbmcgYWdhaW4uPGJyPldoeSB3b3VsZCBuYXV0aWx1cyBkZXBlbmQgb24gdGhpcyBj cmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3I8YnI+cmh5dGhtYm94LTAuOS4gJnF1b3Q7bGRk IC91c3IvYmluL25hdXRpbHVzJnF1b3Q7IGRvZXMgbm90IHNob3cgYW55IGRlcGVuZGVuY3kuCjxi cj48YnI+V2hhdCBwYXJ0IG9mIGdub21lIGRvZXMgdXNlIGl0Pzxicj48YnI+VGhhbmsgeW91LCB2 ZXJ5IG11Y2guPGJyPjxicj4vUGF1bG8gUm9tYS48YnI+PGJyPjxkaXY+PHNwYW4gY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA2LzkvMDYsIDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1lIj5OaWNrb2xh eSBWLiBTaG15cmV2PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm5zaG15cmV2QHlhbmRleC5ydSI+ Cm5zaG15cmV2QHlhbmRleC5ydTwvYT4mZ3Q7IHdyb3RlOjwvc3Bhbj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIw NCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij73 IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVsbyBDYXZhbGNhbnRpINDJ28XUOgo8 YnI+Jmd0OyBIaSw8YnI+Jmd0Ozxicj4mZ3Q7IEkgYW0gaGF2aW5nIGEgcHJvYmxlbSB3aXRoIG5h dXRpbHVzIDIuMTAgZnJvbSBmZWRvcmEgNC48YnI+Jmd0OyBTaW5jZSB5ZXN0ZXJkYXksIGl0IGRv ZXMgbm90IHB1dCBhbnkgaWNvbiBvbiB0aGUgZGVza3RvcCwgYWx0aG91Z2ggaXQ8YnI+Jmd0OyBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo8YnI+Jmd0OyBJIHRyeSB0byBjbG9zZSB0aGUgZ25vbWUgc2Vzc2lvbiBpdCBoYW5ncyBhbmQg SSBoYXZlIHRvIGtpbGwmbmJzcDsmbmJzcDtYLjxicj4mZ3Q7PGJyPiZndDsgRXZlcnl0aGluZyBl bHNlIHNlZW1zIHRvIGJlIG5vcm1hbC4gSSBjYW4gbG9naW4gaW4ga2RlIHdpdGggbm8gcHJvYmxl bTxicj4mZ3Q7IGF0IGFsbC4gSSByZWJvb3RlZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQg bm90aGluZyBoYXMgY2hhbmdlZC4KPGJyPiZndDs8YnI+Jmd0OyBBbnkgc3VnZ2VzdGlvbiB3b3Vs ZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLjxicj4mZ3Q7PGJyPldpdGhvdXQgYWRkaXRpb25hbCBp bmZvcm1hdGlvbiBpdCdzIGhhcmQgdG8gc2F5IHdoYXQgaXMgZ29pbmcgb24uIEZpcnN0PGJyPm9m IGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21ldGhpbmcgaXMgZHVtcGVk IHRvIGVycm9yPGJyPmxvZy4gVGhlbiB0cnkgdG8gcnVuIG5hdXRpbHVzIG9yIGdub21lLXNlc3Np b24gdW5kZXIgc3RyYWNlIGFuZCBmaW5kIHRoZQo8YnI+cGxhY2Ugd2hlcmUgaXQgaGFuZ3MuPGJy Pjxicj5Zb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDo8YnI+PGJyPndpdGggZ2RiIHlvdSBzaG91bGQg bG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGg8YnI+PGJyPmdk YiAtLXBpZD0mbHQ7bmF1dGlsdXNfcGlkJmd0Ozxicj48YnI+YW5kIGNvbGxlY3QgYmFja3RyYWNl IHdpdGggJnF1b3Q7dGhyZWFkIGFwcGx5IGFsbCBidCZxdW90OyBjb21tYW5kLiBZb3UgbmVlZCB0 bwo8YnI+aW5zdGFsbCBkZWJ1ZyBwYWNrYWdlcyBpbnN0YWxsZWQuPGJyPjxicj48YnI+PC9ibG9j a3F1b3RlPjwvZGl2Pjxicj4K ------=_Part_22870_26670651.1149847094006-- From crotalus@superig.com.br Thu Jun 8 21:35:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AD8293B05AC for ; Thu, 8 Jun 2006 21:35:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18364-01 for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: from smtpsig-4.ig.com.br (smtpsig-4.ig.com.br [200.226.132.141]) by menubar.gnome.org (Postfix) with ESMTP id 304553B02FE for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: (qmail 26488 invoked from network); 9 Jun 2006 01:35:15 -0000 Received: from 200216029049.user.veloxzone.com.br (HELO [192.168.254.2]) (Usuario_autenticado:promac@superig.com.br@[200.216.29.49]) (envelope-sender ) by smtpsig-4.ig.com.br (qmail-ldap-1.03) with SMTP for ; 9 Jun 2006 01:35:15 -0000 Message-ID: <4488D055.20009@superig.com.br> Date: Thu, 08 Jun 2006 22:35:17 -0300 From: Paulo Roma Cavalcanti Organization: UFRJ User-Agent: Thunderbird 1.5 (X11/20060119) MIME-Version: 1.0 To: nautilus-list@gnome.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=0.001 tagged_above=-999 required=2 tests=[BAYES_50=0.001] X-Spam-Score: 0.001 X-Spam-Level: X-Mailman-Approved-At: Fri, 09 Jun 2006 06:30:27 -0400 Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: roma@lcg.ufrj.br List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 01:35:23 -0000 Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. From alexl@redhat.com Fri Jun 9 10:23:21 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D9EBB3B010A for ; Fri, 9 Jun 2006 10:23:21 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30603-04 for ; Fri, 9 Jun 2006 10:23:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 219813B0393 for ; Fri, 9 Jun 2006 10:23:15 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5mso001978; Fri, 9 Jun 2006 10:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5miv011931; Fri, 9 Jun 2006 10:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5lwp005947; Fri, 9 Jun 2006 10:05:48 -0400 From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1149103242.8687.38.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1149103242.8687.38.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 09 Jun 2006 16:05:47 +0200 Message-Id: <1149861948.3023.61.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.549 tagged_above=-999 required=2 tests=[AWL=-0.025, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_BF=0.077] X-Spam-Score: -2.549 X-Spam-Level: Cc: Nautilus Subject: Re: nautilus hangs occasionnaly on a right click X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 14:23:22 -0000 On Wed, 2006-05-31 at 21:20 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Got it ! > Maybe it's the second time I send this message, but I don't find it in > my "sent" directory It looks like some sort of thread deadlock. Both the main thread and the thumbnailer thread are blocking on a libc mutex that looks like its in free(). The rest of the threads look normal, except this: Thread 11 (Thread -1213518928 (LWP 2980)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x09d05830 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb7ab11f8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () I dunno what that is. In this backtrace the thumbnailing thread was launching: "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/lf2006-04-21.aud.cafiero.34781.sbeok.flac16/lf2006-04-21audD1t01.ogg' '/tmp/.gnome_thumbnail.ObrcTQ'" to thumbnail some video. Maybe this is related. Could you repeat this whole procedure a bunch of time and send me the results. It might be possible to figure out the common attributes of the multiple backtraces. Its pretty hard to figure things out from this one only. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an otherworldly day-dreaming messiah whom everyone believes is mad. She's a scantily clad goth traffic cop who don't take no shit from nobody. They fight crime! From alexl@redhat.com Mon Jun 12 05:55:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 232653B0078 for ; Mon, 12 Jun 2006 05:55:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-02 for ; Mon, 12 Jun 2006 05:55:25 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937443B008A for ; Mon, 12 Jun 2006 05:55:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sfY0025126; Mon, 12 Jun 2006 05:54:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9satI014479; Mon, 12 Jun 2006 05:54:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sZEB015002; Mon, 12 Jun 2006 05:54:35 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1149705572.8926.8.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:54:35 +0200 Message-Id: <1150106076.3023.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:55:27 -0000 On Wed, 2006-06-07 at 21:39 +0300, Sivan Greenberg wrote: > Hi Again, the wonderful users and hacker of nautilus. > > I would like to bring your attention again to a patch I have created > originally using pure gnome_vfs functions to check if the source's > parent is read only, and if so default to a copy operation instead of a > move operation which previously caused hassle, confusing and much mess > among especially converts from other operating system, as to why "Such a > trivial operation needs to involve hassle and why do I even need to > think about it and select copy from the context menu??" etc.. ;-) > > So after realizing this patch is not good enough, due to it being inside > a callback which gets called multiple times per each DND operation, > Manny on the irc channel proposed I use instead of the native gnome-vfs > methods, the nautilus infras. for file manipulation (to check if the > source uri's parent is read only) , namely > libnautilus-private/nautilus-file.h::nautilus_file_get_existing > > and > > libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info > > Now my question is, should I get a new patch in the same a approach of > the previous one (which actually followed another patch approach, from > the file ownership bug) but with the this time cache enabled functions > of nautilus-file.h, will this be accepted by the upstream maintainers? > > I would hate to start work on it, just to realize I need to re-do it > again. > > Many thanks, and apologies for the spam :) This is tricky stuff. In general we try to avoid sync i/o in Nautilus, but its very complicated to do in the case of dnd where we really need a sync reply immediately or the ui looks weird (we don't immediately show the right cursor and you might have to wiggle the mouse to get it to change even). Another complication is that doing generic gnome-vfs i/o can cause authentication dialogs to pop up, which is bad during dnd. So, I think the best workaround is to continue using sync i/o in this case. But lets try minimizing it. So, only do this magic for local files (i.e. file: uris), stat as few times as possible and cache i/o results. So, the two patches in your mail need to be combined into one should_convert_move_to_copy() function that does at most one stat of the target and one of the source. Furthermore, we should cache the results of this function for the last target/source pair, which I think can be done by using user-data on the drag context. Does that sound good? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad sweet-toothed dwarf gone bad. She's a wealthy hip-hop hooker living homeless in New York's sewers. They fight crime! From alexl@redhat.com Mon Jun 12 05:56:54 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F4993B00A7 for ; Mon, 12 Jun 2006 05:56:54 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-03 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A5AC63B00A6 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMJV025635; Mon, 12 Jun 2006 05:56:22 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMGU014838; Mon, 12 Jun 2006 05:56:22 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uLdp015128; Mon, 12 Jun 2006 05:56:22 -0400 From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1149109286.3625.89.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:56:22 +0200 Message-Id: <1150106182.3023.107.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:56:54 -0000 On Wed, 2006-05-31 at 16:01 -0500, Federico Mena Quintero wrote: > Hi, > > I finally found the reason why volume icons overlap in the desktop > (http://bugzilla.gnome.org/show_bug.cgi?id=330298) > > finish_adding_new_icons() was ignoring all lazily-positioned icons when > filling up the PlacemenGrid. This caused the overlaps. The fix is to > make icon_set_position() turn off that flag in the icon. > > Also, once a lazily-positioned icon was moved to avoid overlaps, we > weren't emitting icon_position_changed so that the higher-level code > would save the new position metadata. This caused potential overlaps > when restarting Nautilus. > > Is this OK to commit? > > [This needs a little change to apply to Manny's latest version of > nautilus-icon-container.c, which doesn't have separate scaling values > for x/y, but that's a trivial change I'll make when applying the patch.] I thought this bug was fixed already? Manny, whats your opinion on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding overambitious jungle king with a winning smile and a way with the ladies. She's a plucky hypochondriac wrestler looking for love in all the wrong places. They fight crime! From alexl@redhat.com Mon Jun 12 05:58:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 439223B00A6 for ; Mon, 12 Jun 2006 05:58:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29028-05 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 99BAF3B00D8 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5O0026237; Mon, 12 Jun 2006 05:58:05 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5oH015029; Mon, 12 Jun 2006 05:58:05 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w4Lp015176; Mon, 12 Jun 2006 05:58:05 -0400 From: Alexander Larsson To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:58:04 +0200 Message-Id: <1150106285.3023.109.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:58:34 -0000 On Fri, 2006-06-02 at 10:49 +0100, James Pharaoh wrote: > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. We used to look for a ".directory" file in each directory that let you set both icon and name for the directory (the file used was a desktop file). However, looking for an extra file each time we look at a directory was a significant performance problem, so this was removed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly small-town matador on a mission from God. She's a high-kicking African-American stripper with her own daytime radio talk show. They fight crime! From alexl@redhat.com Mon Jun 12 06:03:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 47A983B008A; Mon, 12 Jun 2006 06:03:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29048-09; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937FE3B0083; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IEV027487; Mon, 12 Jun 2006 06:02:18 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IBT015943; Mon, 12 Jun 2006 06:02:18 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2G6h015653; Mon, 12 Jun 2006 06:02:17 -0400 From: Alexander Larsson To: Xavier Claessens In-Reply-To: <1149501410.7231.27.camel@zdra-desktop> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> <1149501410.7231.27.camel@zdra-desktop> Content-Type: text/plain Date: Mon, 12 Jun 2006 12:02:16 +0200 Message-Id: <1150106537.3023.112.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: Christian Neumair , Vincent Untz , "nautilus-list@gnome.org" , Mark McLoughlin Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 10:03:01 -0000 On Mon, 2006-06-05 at 11:56 +0200, Xavier Claessens wrote: > So what I propose is adding some objects to libnautilus-private to have > a common way handling Drive and Volume files. In the same way of > nautilus_destkop_* we can make something like nautilus_volume_file and > nautilus_drive_file which would be used to computer:///, > x-nautilus-desktop:///,etc. > > On this objects we can have methods like > > gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); > > to replace the eject_for_type(). And > > void nautilus_volume_file_get_options (NautilusDriveFile*, > gboolean *show_mount, > gboolean *show_unmount, > gboolean *show_eject, > gboolean *show_format); > > To know which options we can show for this file. > > I don't know exactly how all that can work and if that's a good idea but > I can work on it this summer. I'll experiment some patches as soon as my > exams finishes. > > I would be happy to have comments on this. I'm not sure we really need a new object type for this (since there are full-blown objects for volume and drive already this will just cause pain). However, moving these functions into one shared place in libnautilus-private and generalizing them as best we can sounds like a good plan. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a maverick overambitious filmmaker with a robot buddy named Sparky. She's a wealthy communist doctor from a family of eight older brothers. They fight crime! From sivan@ubuntu.com Tue Jun 13 06:01:08 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9334F3B000C for ; Tue, 13 Jun 2006 06:01:08 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18979-03 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8D3323B00C9 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from bzq-84-108-224-64.cablep.bezeqint.net (bzq-84-108-224-64.cablep.bezeqint.net [84.108.224.64]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8778C1053A; Tue, 13 Jun 2006 11:59:56 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150106076.3023.105.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Tue, 13 Jun 2006 12:59:56 +0300 Message-Id: <1150192797.6544.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.417 tagged_above=-999 required=2 tests=[AWL=0.047, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.417 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 10:01:08 -0000 On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > Another complication is that doing generic gnome-vfs i/o can cause > authentication dialogs to pop up, which is bad during dnd. If it occurs during after a remote sessions has been dropped and the target window is till on, I can't see why it can create a problem. (I believe Win32 based platforms follow this approach as well) > So, the two patches in your mail need to be combined into one > should_convert_move_to_copy() function that does at most one stat of the > target and one of the source. Furthermore, we should cache the results > of this function for the last target/source pair, which I think can be > done by using user-data on the drag context. Some question: * The user ownership patch was not created by me, I think it's taken from nautilus's CVS ;-) * Wouldn't it be easier and more readable to use nautilus own already cache enabled file permissoin and access functions ? (as in libnautilus-private/nautilus-file.h, Manny noted to me these are cache enabled) Cheers, Sivan From alexl@redhat.com Tue Jun 13 07:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D0B863B000A for ; Tue, 13 Jun 2006 07:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20874-04 for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9B2343B000C for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOH0b003764; Tue, 13 Jun 2006 06:24:17 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOHxZ029012; Tue, 13 Jun 2006 06:24:17 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOGuB003508; Tue, 13 Jun 2006 06:24:16 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150192797.6544.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> Content-Type: text/plain Date: Tue, 13 Jun 2006 12:24:14 +0200 Message-Id: <1150194254.3023.167.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:13:45 -0000 On Tue, 2006-06-13 at 12:59 +0300, Sivan Greenberg wrote: > On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > > > Another complication is that doing generic gnome-vfs i/o can cause > > authentication dialogs to pop up, which is bad during dnd. > > If it occurs during after a remote sessions has been dropped and the > target window is till on, I can't see why it can create a problem. (I > believe Win32 based platforms follow this approach as well) If you do i/o while the drag is happening you'll get the dialog while you're dragging. This is bad in itself, for instance you can't type or click on it without releasing the drag, and then there are potential risks for stuck pointer grabs with modal dialogs. > > So, the two patches in your mail need to be combined into one > > should_convert_move_to_copy() function that does at most one stat of the > > target and one of the source. Furthermore, we should cache the results > > of this function for the last target/source pair, which I think can be > > done by using user-data on the drag context. > > Some question: > > * The user ownership patch was not created by me, I think it's taken > from nautilus's CVS ;-) So? Just change it. :) > * Wouldn't it be easier and more readable to use nautilus own already > cache enabled file permissoin and access functions ? (as in > libnautilus-private/nautilus-file.h, Manny noted to me these are cache > enabled) NautilusFile is the nautilus async machinery. Take a look at for instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some details how it works. You can't really use this in a sync way (except if you're lucky and the info was already cached). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted voodoo paramedic haunted by an iconic dead American confidante She's a radical red-headed femme fatale with an evil twin sister. They fight crime! From federico@ximian.com Tue Jun 13 12:03:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 736FB3B00DB for ; Tue, 13 Jun 2006 12:03:41 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29142-07 for ; Tue, 13 Jun 2006 12:03:39 -0400 (EDT) Received: from peabody.ximian.com (peabody.ximian.com [130.57.169.10]) by menubar.gnome.org (Postfix) with ESMTP id F40593B0071 for ; Tue, 13 Jun 2006 12:03:38 -0400 (EDT) Received: (qmail 22918 invoked from network); 13 Jun 2006 15:55:54 -0000 Received: from localhost (HELO 164-99-120-90.boston.ximian.com) (127.0.0.1) by localhost with SMTP; 13 Jun 2006 15:55:54 -0000 From: Federico Mena Quintero To: Alexander Larsson In-Reply-To: <1150106182.3023.107.camel@greebo> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> Content-Type: text/plain Date: Tue, 13 Jun 2006 10:51:33 -0500 Message-Id: <1150213894.17566.105.camel@cacharro.xalalinux.org> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.574 tagged_above=-999 required=2 tests=[AWL=0.025, BAYES_00=-2.599] X-Spam-Score: -2.574 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 16:03:41 -0000 On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > I thought this bug was fixed already? > Manny, whats your opinion on this? I believe Manny's patches were about fine-tuning the placement grid and positioning in general. My patch is about maintaining the right metadata for icons by emitting the signal as appropriate, and about really maintaining the position of icons which were lazily placed. Federico From sivan@ubuntu.com Tue Jun 13 18:40:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0FA973B00C9 for ; Tue, 13 Jun 2006 18:40:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08820-08 for ; Tue, 13 Jun 2006 18:40:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 015523B000E for ; Tue, 13 Jun 2006 18:40:30 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id DB37F4509; Wed, 14 Jun 2006 00:39:17 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150194254.3023.167.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 01:39:21 +0300 Message-Id: <1150238361.5853.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 22:40:34 -0000 On Tue, 2006-06-13 at 12:24 +0200, Alexander Larsson wrote: > NautilusFile is the nautilus async machinery. Take a look at for > instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some > details how it works. You can't really use this in a sync way (except if > you're lucky and the info was already cached). > Cool, so should I just aim to use stock sync and cached up file access functions from gnome-vfs ? (I understand from that you are suggesting to refrain from using the sync func of nautilus-io) Sivan From alexl@redhat.com Wed Jun 14 03:06:36 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8E1163B0014 for ; Wed, 14 Jun 2006 03:06:36 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20144-09 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2B58E3B0004 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75miD013721; Wed, 14 Jun 2006 03:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75mMR009753; Wed, 14 Jun 2006 03:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75l1O019900; Wed, 14 Jun 2006 03:05:48 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150238361.5853.0.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 09:05:47 +0200 Message-Id: <1150268748.3023.170.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 07:06:36 -0000 On Wed, 2006-06-14 at 01:39 +0300, Sivan Greenberg wrote: > > Cool, so should I just aim to use stock sync and cached up file access > functions from gnome-vfs ? (I understand from that you are suggesting > to > refrain from using the sync func of nautilus-io) You might as well use g_stat() if you're working on local files only. Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also an automatic check for local files, since it returns NULL for other uris.) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal pirate barbarian with a robot buddy named Sparky. She's a manipulative bisexual college professor from a different time and place. They fight crime! From sivan@ubuntu.com Wed Jun 14 05:35:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 16DF43B04FC for ; Wed, 14 Jun 2006 05:35:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26784-02 for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8457E3B053D for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id E28F629CD05; Wed, 14 Jun 2006 11:34:00 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150268748.3023.170.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 12:34:06 +0300 Message-Id: <1150277646.6568.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:35:24 -0000 On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > You might as well use g_stat() if you're working on local files only. > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > an automatic check for local files, since it returns NULL for other > uris.) I hope it's going to be easy as it seems ;-). On a related note, why are g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , (gnome_vfs_get_file_info_uri()) Sivan From alexl@redhat.com Wed Jun 14 05:47:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id F0D593B040E for ; Wed, 14 Jun 2006 05:47:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27324-08 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 83C2E3B04B3 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9keHl002050; Wed, 14 Jun 2006 05:46:40 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kZtw005095; Wed, 14 Jun 2006 05:46:35 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kYt0002077; Wed, 14 Jun 2006 05:46:34 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150277646.6568.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 11:46:34 +0200 Message-Id: <1150278394.26621.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:47:32 -0000 On Wed, 2006-06-14 at 12:34 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > > > You might as well use g_stat() if you're working on local files only. > > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > > an automatic check for local files, since it returns NULL for other > > uris.) > > I hope it's going to be easy as it seems ;-). On a related note, why are > g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones > I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , > (gnome_vfs_get_file_info_uri()) They are not cached. You have to implement that yourself. The reason to use g_stat directly is just to avoid lots of levels of indirection and bloat when its not needed (i.e. you're only doing this for local files anyway). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding one-eyed jungle king on his last day in the job. She's a man-hating goth mercenary who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From sivan@ubuntu.com Wed Jun 14 09:28:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 748873B029B for ; Wed, 14 Jun 2006 09:28:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15163-07 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 29D2E3B0119 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from [192.168.2.101] (87.69.31.132.cable.012.net.il [87.69.31.132]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BB0CC2A6BFD; Wed, 14 Jun 2006 15:27:18 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 16:26:56 +0300 Message-Id: <1150291617.5322.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 13:28:07 -0000 On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf@free.fr Wed Jun 14 15:43:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 870EF3B000E for ; Wed, 14 Jun 2006 15:43:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04192-03 for ; Wed, 14 Jun 2006 15:43:40 -0400 (EDT) Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by menubar.gnome.org (Postfix) with ESMTP id 6A4B33B0102 for ; Wed, 14 Jun 2006 15:43:39 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp1-g19.free.fr (Postfix) with ESMTP id 7F91C9AE0E; Wed, 14 Jun 2006 21:43:08 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Content-Type: multipart/mixed; boundary="=-6ha9yoI4TiErFtbzzRYq" Date: Wed, 14 Jun 2006 21:43:02 +0200 Message-Id: <1150314184.8687.75.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.511 tagged_above=-999 required=2 tests=[AWL=-0.066, BAYES_00=-2.599, TW_BF=0.077, TW_XB=0.077] X-Spam-Score: -2.511 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 19:43:44 -0000 --=-6ha9yoI4TiErFtbzzRYq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick --=-6ha9yoI4TiErFtbzzRYq Content-Disposition: attachment; filename=nautilushang2 Content-Type: text/plain; name=nautilushang2; charset=utf-8 Content-Transfer-Encoding: 7bit [pjacquot@neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot@neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) --=-6ha9yoI4TiErFtbzzRYq-- From alexl@redhat.com Thu Jun 15 03:31:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2922C3B002B for ; Thu, 15 Jun 2006 03:31:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19338-08 for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 96E493B00FE for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJGA017396; Thu, 15 Jun 2006 03:31:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJPR008545; Thu, 15 Jun 2006 03:31:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VIdM006092; Thu, 15 Jun 2006 03:31:18 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Thu, 15 Jun 2006 09:31:16 +0200 Message-Id: <1150356676.26621.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:31:24 -0000 On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application@ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Thu Jun 15 03:32:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 08A5B3B0126 for ; Thu, 15 Jun 2006 03:32:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19413-06 for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 8B3E63B002B for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WfUL017815; Thu, 15 Jun 2006 03:32:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7Wa1T008783; Thu, 15 Jun 2006 03:32:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WZ5W006145; Thu, 15 Jun 2006 03:32:36 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Content-Type: text/plain Date: Thu, 15 Jun 2006 09:32:35 +0200 Message-Id: <1150356755.26621.8.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:32:58 -0000 On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot@anpe.fr Thu Jun 15 04:17:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DED9A3B0298 for ; Thu, 15 Jun 2006 04:17:30 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22167-05 for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from smtp3.lc.anpe.fr (smtp3.lc.anpe.fr [80.118.163.18]) by menubar.gnome.org (Postfix) with ESMTP id 45FFD3B00FE for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from HOMERE02.anpe.fr (localhost.localdomain [127.0.0.1]) by smtp3.lc.anpe.fr (antivirus) with ESMTP id 9498573CB7; Thu, 15 Jun 2006 10:17:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE02.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 15 Jun 2006 10:15:57 +0200 Message-ID: <44911757.6070100@anpe.fr> Date: Thu, 15 Jun 2006 10:16:23 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> In-Reply-To: <1150356676.26621.5.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 15 Jun 2006 08:15:57.0655 (UTC) FILETIME=[EE03CE70:01C69053] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:17:31 -0000 Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application@ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl@redhat.com Thu Jun 15 04:31:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4597A3B045B for ; Thu, 15 Jun 2006 04:31:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22773-09 for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F8DD3B045A for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8Vl3p004055; Thu, 15 Jun 2006 04:31:47 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VlIQ020296; Thu, 15 Jun 2006 04:31:47 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VkBA014758; Thu, 15 Jun 2006 04:31:47 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Content-Type: text/plain Date: Thu, 15 Jun 2006 10:31:46 +0200 Message-Id: <1150360307.26621.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:31:58 -0000 On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan@ubuntu.com Thu Jun 15 04:36:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C31D23B0155 for ; Thu, 15 Jun 2006 04:36:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23178-08 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 5EC753B00F7 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from [192.168.1.222] (89.0.59.223.dynamic.barak-online.net [89.0.59.223]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 1F8982A6C13; Thu, 15 Jun 2006 10:36:22 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Thu, 15 Jun 2006 11:36:22 +0300 Message-Id: <1150360583.5504.4.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:36:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel@embl.fr Thu Jun 15 07:58:30 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE6BA3B041F for ; Thu, 15 Jun 2006 07:58:29 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04112-09 for ; Thu, 15 Jun 2006 07:58:26 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CD7493B04B1 for ; Thu, 15 Jun 2006 07:58:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FBwNm20535; Thu, 15 Jun 2006 13:58:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp020384; Thu Jun 15 13:58:01 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 68FD93A009C; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 5D65A3A008B; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Message-ID: <44914B5C.8040003@embl.fr> Date: Thu, 15 Jun 2006 13:58:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: nautilus-list@gnome.org References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> In-Reply-To: <1146067801.621.43.camel@greebo> Content-Type: multipart/mixed; boundary=------------030804040701090309040506 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.47 tagged_above=-999 required=2 tests=[AWL=-0.007, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.47 X-Spam-Level: Cc: grumz@grumz.net X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 11:58:30 -0000 This is a multi-part message in MIME format. --------------030804040701090309040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > --------------030804040701090309040506 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030804040701090309040506-- From ruaudel@embl.fr Thu Jun 15 08:30:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9028C3B0445 for ; Thu, 15 Jun 2006 08:30:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06870-02 for ; Thu, 15 Jun 2006 08:30:00 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 9B2383B042C for ; Thu, 15 Jun 2006 08:29:59 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FCTl110148; Thu, 15 Jun 2006 14:29:47 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp008288; Thu Jun 15 14:26:19 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 0C35E3A009C; Thu, 15 Jun 2006 14:25:32 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid E9DC23A008B; Thu, 15 Jun 2006 14:25:31 +0200 (CEST) Message-ID: <449151FE.2070906@embl.fr> Date: Thu, 15 Jun 2006 14:26:38 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> In-Reply-To: <44914B5C.8040003@embl.fr> Content-Type: multipart/mixed; boundary=------------040407040200090207040807 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:30.64249 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.536 tagged_above=-999 required=2 tests=[AWL=0.062, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.536 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 12:30:02 -0000 This is a multi-part message in MIME format. --------------040407040200090207040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Frédéric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl@redhat.com alla@lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > --------------040407040200090207040807 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------040407040200090207040807-- From patrick.jacquotf@free.fr Thu Jun 15 13:36:49 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5A7663B0397 for ; Thu, 15 Jun 2006 13:36:49 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25173-04 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 538763B0311 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 6676E4444D; Thu, 15 Jun 2006 19:34:32 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Content-Type: text/plain; charset=utf-8 Date: Thu, 15 Jun 2006 19:34:26 +0200 Message-Id: <1150392867.8687.79.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.585 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599] X-Spam-Score: -2.585 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 17:36:49 -0000 Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl@redhat.com Fri Jun 16 03:13:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA2653B002C for ; Fri, 16 Jun 2006 03:13:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20384-08 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A6B853B0011 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8Y3006797; Fri, 16 Jun 2006 02:45:08 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8bO013639; Fri, 16 Jun 2006 02:45:08 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j6oC001946; Fri, 16 Jun 2006 02:45:07 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 08:45:06 +0200 Message-Id: <1150440307.26621.41.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 07:13:58 -0000 On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan@ubuntu.com Fri Jun 16 04:03:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21E6E3B0076 for ; Fri, 16 Jun 2006 04:03:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21280-09 for ; Fri, 16 Jun 2006 04:03:28 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id E8EC33B0011 for ; Fri, 16 Jun 2006 04:03:27 -0400 (EDT) Received: from badtemperrodent.net (badtemperrodent.net [192.117.110.191]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8CFB82A6BFF; Fri, 16 Jun 2006 09:41:56 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Fri, 16 Jun 2006 10:39:05 +0300 Message-Id: <1150443545.5513.18.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:03:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl@redhat.com Fri Jun 16 04:16:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7A853B002C for ; Fri, 16 Jun 2006 04:16:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22202-08 for ; Fri, 16 Jun 2006 04:16:00 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F40B13B006C for ; Fri, 16 Jun 2006 04:15:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F9j6000439; Fri, 16 Jun 2006 04:15:09 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F46p028945; Fri, 16 Jun 2006 04:15:04 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F3cm012357; Fri, 16 Jun 2006 04:15:03 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:15:03 +0200 Message-Id: <1150445703.26621.60.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:16:01 -0000 On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl@redhat.com Fri Jun 16 04:41:12 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 557D03B0011 for ; Fri, 16 Jun 2006 04:41:12 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22567-09 for ; Fri, 16 Jun 2006 04:41:11 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id CFBBB3B0007 for ; Fri, 16 Jun 2006 04:41:10 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8Za55006178; Fri, 16 Jun 2006 04:35:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZV2m032257; Fri, 16 Jun 2006 04:35:31 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZUux013456; Fri, 16 Jun 2006 04:35:30 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: Frederic Ruaudel In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:35:30 +0200 Message-Id: <1150446930.26621.70.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:41:12 -0000 On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin@xs4all.nl Fri Jun 16 05:04:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 98D7C3B002C for ; Fri, 16 Jun 2006 05:04:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23115-09 for ; Fri, 16 Jun 2006 05:04:27 -0400 (EDT) Received: from smtp-vbr11.xs4all.nl (smtp-vbr11.xs4all.nl [194.109.24.31]) by menubar.gnome.org (Postfix) with ESMTP id C07BF3B0007 for ; Fri, 16 Jun 2006 05:04:26 -0400 (EDT) Received: from [172.16.0.167] (a82-94-101-162.adsl.xs4all.nl [82.94.101.162]) (authenticated bits=0) by smtp-vbr11.xs4all.nl (8.13.6/8.13.6) with ESMTP id k5G93fN8053607 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Fri, 16 Jun 2006 11:03:41 +0200 (CEST) (envelope-from rubin@xs4all.nl) Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Rubin To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 16 Jun 2006 11:03:41 +0200 Message-Id: <1150448621.29988.7.camel@thinkpad> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 16 Jun 2006 05:24:20 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:04:28 -0000 Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when replying to this! Thanks! Rubin. From alexl@redhat.com Fri Jun 16 05:55:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id A4FE73B000B for ; Fri, 16 Jun 2006 05:55:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24488-05 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 411CE3B0012 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXBo031898; Fri, 16 Jun 2006 05:54:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXTM013747; Fri, 16 Jun 2006 05:54:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sW3W017065; Fri, 16 Jun 2006 05:54:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 11:54:32 +0200 Message-Id: <1150451672.26621.77.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:55:38 -0000 On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl@redhat.com Fri Jun 16 08:13:04 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21C553B006C for ; Fri, 16 Jun 2006 08:13:04 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27898-03 for ; Fri, 16 Jun 2006 08:13:03 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DC1763B002C for ; Fri, 16 Jun 2006 08:13:02 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCPrp006369; Fri, 16 Jun 2006 08:12:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCKTB004736; Fri, 16 Jun 2006 08:12:20 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCJn6025533; Fri, 16 Jun 2006 08:12:20 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Content-Type: text/plain Date: Fri, 16 Jun 2006 14:12:19 +0200 Message-Id: <1150459940.26621.88.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:13:04 -0000 On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:27:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 064A53B0011 for ; Fri, 16 Jun 2006 08:27:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28295-08 for ; Fri, 16 Jun 2006 08:27:55 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CB2B33B002C for ; Fri, 16 Jun 2006 08:27:54 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCR3Z13371; Fri, 16 Jun 2006 14:27:03 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp013140; Fri Jun 16 14:26:43 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id B41023A009C; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid A52D83A008B; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Message-ID: <4492A396.6040708@embl.fr> Date: Fri, 16 Jun 2006 14:27:02 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> In-Reply-To: <1150460132.26621.91.camel@greebo> Content-Type: multipart/mixed; boundary=------------090102050009040200050407 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:93.88275 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.474 tagged_above=-999 required=2 tests=[AWL=-0.011, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.474 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:27:57 -0000 This is a multi-part message in MIME format. --------------090102050009040200050407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? --------------090102050009040200050407 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090102050009040200050407-- From alexl@redhat.com Fri Jun 16 08:36:45 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8EEAD3B00A2 for ; Fri, 16 Jun 2006 08:36:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28772-01 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 3F2483B0076 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCa32c012746; Fri, 16 Jun 2006 08:36:03 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZwoG008648; Fri, 16 Jun 2006 08:35:58 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZvod026619; Fri, 16 Jun 2006 08:35:58 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:35:57 +0200 Message-Id: <1150461357.26621.94.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:36:45 -0000 On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Frédéric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:41:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE0873B0007 for ; Fri, 16 Jun 2006 08:41:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28628-04 for ; Fri, 16 Jun 2006 08:41:37 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 728BA3B0076 for ; Fri, 16 Jun 2006 08:41:35 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCebu21324; Fri, 16 Jun 2006 14:40:37 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021209; Fri Jun 16 14:40:26 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 6113F3A009C; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 569F63A008B; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Message-ID: <4492A6CE.1040904@embl.fr> Date: Fri, 16 Jun 2006 14:40:46 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> In-Reply-To: <1150461357.26621.94.camel@greebo> Content-Type: multipart/mixed; boundary=------------020601000705080507000607 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.542 tagged_above=-999 required=2 tests=[AWL=0.056, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.542 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:41:39 -0000 This is a multi-part message in MIME format. --------------020601000705080507000607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. --------------020601000705080507000607 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------020601000705080507000607-- From patrick.jacquot@anpe.fr Fri Jun 16 08:45:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8114F3B0074 for ; Fri, 16 Jun 2006 08:45:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28690-06 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from smtp2.lc.anpe.fr (smtp2.lc.anpe.fr [80.118.163.16]) by menubar.gnome.org (Postfix) with ESMTP id 5012E3B0012 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from HOMERE01.anpe.fr (amadeus [127.0.0.1]) by smtp2.lc.anpe.fr (antivirus) with ESMTP id 39F4673C9C; Fri, 16 Jun 2006 13:54:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE01.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Fri, 16 Jun 2006 13:53:25 +0200 Message-ID: <44929BCF.2080909@anpe.fr> Date: Fri, 16 Jun 2006 13:53:51 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> In-Reply-To: <1150440307.26621.41.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 16 Jun 2006 11:53:25.0151 (UTC) FILETIME=[795772F0:01C6913B] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:45:13 -0000 Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl@redhat.com Fri Jun 16 08:49:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 485F93B002C for ; Fri, 16 Jun 2006 08:49:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29026-04 for ; Fri, 16 Jun 2006 08:49:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C6C253B0007 for ; Fri, 16 Jun 2006 08:49:18 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPNN016840; Fri, 16 Jun 2006 08:48:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPYD011183; Fri, 16 Jun 2006 08:48:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmOqK027223; Fri, 16 Jun 2006 08:48:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:48:24 +0200 Message-Id: <1150462104.1962.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:49:20 -0000 On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Frédéric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:55:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D29373B0012 for ; Fri, 16 Jun 2006 08:55:43 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29229-01 for ; Fri, 16 Jun 2006 08:55:42 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 1229B3B0007 for ; Fri, 16 Jun 2006 08:55:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCrIL28510; Fri, 16 Jun 2006 14:53:18 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp028490; Fri Jun 16 14:53:17 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E00233A009C; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid D44943A008B; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Message-ID: <4492A9D0.1030804@embl.fr> Date: Fri, 16 Jun 2006 14:53:36 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> In-Reply-To: <1150462104.1962.1.camel@greebo> Content-Type: multipart/mixed; boundary=------------070000060703070709040705 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:55:44 -0000 This is a multi-part message in MIME format. --------------070000060703070709040705 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? --------------070000060703070709040705 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------070000060703070709040705-- From alexl@redhat.com Fri Jun 16 09:09:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B9E0D3B0076 for ; Fri, 16 Jun 2006 09:09:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29459-05 for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 570133B002C for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8PQk023537; Fri, 16 Jun 2006 09:08:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8Ptc015871; Fri, 16 Jun 2006 09:08:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8NU0029583; Fri, 16 Jun 2006 09:08:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 15:08:24 +0200 Message-Id: <1150463304.1962.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 13:09:10 -0000 On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris@gnome-de.org Fri Jun 16 10:02:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D214C3B0012 for ; Fri, 16 Jun 2006 10:02:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30453-09 for ; Fri, 16 Jun 2006 10:02:06 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 8119F3B000B for ; Fri, 16 Jun 2006 10:02:04 -0400 (EDT) Received: (qmail 95134 invoked by uid 85); 16 Jun 2006 14:01:10 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.188.32):. Processed in 4.939873 secs); 16 Jun 2006 14:01:10 -0000 Received: from p5496bc20.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.188.32) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 16 Jun 2006 14:01:05 -0000 Subject: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-72GyeevQ02c61O4EiZxt" Date: Fri, 16 Jun 2006 16:01:00 +0200 Message-Id: <1150466460.16424.7.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.51 tagged_above=-999 required=2 tests=[AWL=-0.065, BAYES_00=-2.599, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.51 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:02:08 -0000 --=-72GyeevQ02c61O4EiZxt Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair --=-72GyeevQ02c61O4EiZxt Content-Disposition: attachment; filename=nautilus-sm2.diff Content-Type: text/x-patch; name=nautilus-sm2.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit ? src/.nautilus-application.c.swp Index: configure.in =================================================================== RCS file: /cvs/gnome/nautilus/configure.in,v retrieving revision 1.675 diff -u -p -r1.675 configure.in --- configure.in 12 Jun 2006 12:35:55 -0000 1.675 +++ configure.in 16 Jun 2006 13:58:45 -0000 @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.226 diff -u -p -r1.226 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 18 Mar 2006 07:13:49 -0000 1.226 +++ libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 13:58:48 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.132 diff -u -p -r1.132 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 15 Dec 2005 14:32:57 -0000 1.132 +++ libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 13:58:49 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 16 Jun 2006 13:58:49 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 16 Jun 2006 13:59:00 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1139,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1172,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1326,265 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + g_message ("is %s\n", filename); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[4] = { NULL }; + + argv[0] = "nautilus"; + argv[1] = "--no-default-window"; + + argv[3] = save_session_to_file (); + if (argv[3] != NULL) { + argv[2] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[3] != NULL) { + g_free (argv[3]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 16 Jun 2006 13:59:00 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 16 Jun 2006 13:59:01 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,8 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + N_("Load a saved session from the specified file."), N_("FILENAME") }, { NULL } }; @@ -243,6 +246,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -349,6 +353,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 16 Jun 2006 13:59:05 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 16 Jun 2006 13:59:05 -0000 @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); void start_desktop (); void stop_desktop (); void quit (); Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 16 Jun 2006 13:59:06 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 16 Jun 2006 13:59:08 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 16 Jun 2006 13:59:14 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 16 Jun 2006 13:59:15 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 16 Jun 2006 13:59:19 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-72GyeevQ02c61O4EiZxt-- From ruaudel@embl.fr Fri Jun 16 10:17:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 041543B0007 for ; Fri, 16 Jun 2006 10:17:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31262-02 for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 409803B000B for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GEEN515027; Fri, 16 Jun 2006 16:14:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp014897; Fri Jun 16 16:14:14 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E9D453A00A3; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid BD85C3A009C; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Message-ID: <4492BCC9.3070701@embl.fr> Date: Fri, 16 Jun 2006 16:14:34 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> In-Reply-To: <1150463304.1962.5.camel@greebo> Content-Type: multipart/mixed; boundary=------------030607090300020602080800 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:17:27 -0000 This is a multi-part message in MIME format. --------------030607090300020602080800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred --------------030607090300020602080800 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030607090300020602080800-- From alexl@redhat.com Fri Jun 16 10:40:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 69B0D3B000B for ; Fri, 16 Jun 2006 10:40:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31864-09 for ; Fri, 16 Jun 2006 10:40:38 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F30943B0074 for ; Fri, 16 Jun 2006 10:40:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJwW018100 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJj5001340 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMI38001834 for ; Fri, 16 Jun 2006 10:22:18 -0400 Subject: New permissions page From: Alexander Larsson To: Nautilus Content-Type: text/plain Date: Fri, 16 Jun 2006 16:22:18 +0200 Message-Id: <1150467738.1962.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:40:39 -0000 I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl@redhat.com Fri Jun 16 10:45:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B94D3B000B for ; Fri, 16 Jun 2006 10:45:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32146-02 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id B3F8A3B0074 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXFs007293; Fri, 16 Jun 2006 08:15:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXJC005301; Fri, 16 Jun 2006 08:15:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFWR2025637; Fri, 16 Jun 2006 08:15:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:15:32 +0200 Message-Id: <1150460132.26621.91.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:45:34 -0000 On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl@redhat.com Fri Jun 16 11:41:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA65B3B0080 for ; Fri, 16 Jun 2006 11:41:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01486-01 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 4FDAD3B0076 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFenfc011852; Fri, 16 Jun 2006 11:40:49 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFei3o019963; Fri, 16 Jun 2006 11:40:44 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFegbZ008520; Fri, 16 Jun 2006 11:40:43 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 17:40:37 +0200 Message-Id: <1150472437.1962.14.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 15:41:24 -0000 On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Frédéric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko@yahoo.com Sat Jun 17 03:33:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1350E3B028A for ; Sat, 17 Jun 2006 03:33:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12115-05 for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: from web32408.mail.mud.yahoo.com (web32408.mail.mud.yahoo.com [68.142.207.201]) by menubar.gnome.org (Postfix) with SMTP id 4082B3B071C for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: (qmail 60442 invoked by uid 60001); 17 Jun 2006 07:21:00 -0000 Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Received: from [172.188.218.75] by web32408.mail.mud.yahoo.com via HTTP; Sat, 17 Jun 2006 08:21:00 BST Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) From: Joachim Noreiko Subject: Re: New permissions page To: nautilus-list@gnome.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.909 tagged_above=-999 required=2 tests=[AWL=-1.446, BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: -0.909 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 07:33:56 -0000 --- nautilus-list-request@gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel@embl.fr Sat Jun 17 22:34:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDE743B00B2 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20813-01 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 5EF613B0087 for ; Sat, 17 Jun 2006 22:34:38 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5G92UM21496; Fri, 16 Jun 2006 11:02:30 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021214; Fri Jun 16 11:02:03 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 044C73A00A3; Fri, 16 Jun 2006 11:01:15 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid EC8163A008B; Fri, 16 Jun 2006 11:01:14 +0200 (CEST) Message-ID: <4492739C.3080608@embl.fr> Date: Fri, 16 Jun 2006 11:02:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Content-Type: multipart/mixed; boundary=------------000207040807030500030609 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:52.55345 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:43 -0000 This is a multi-part message in MIME format. --------------000207040807030500030609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred --------------000207040807030500030609 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------000207040807030500030609-- From ruaudel@embl.fr Sat Jun 17 22:34:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3A48B3B00DC for ; Sat, 17 Jun 2006 22:34:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20639-05 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id C6F0D3B0128 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GBrm324709; Fri, 16 Jun 2006 13:53:48 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp024600; Fri Jun 16 13:53:28 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id C79C53A009C; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid B98E93A008B; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Message-ID: <44929BCB.3000405@embl.fr> Date: Fri, 16 Jun 2006 13:53:47 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> In-Reply-To: <1150451672.26621.77.camel@greebo> Content-Type: multipart/mixed; boundary=------------090306030603010903060903 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:44 -0000 This is a multi-part message in MIME format. --------------090306030603010903060903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > --------------090306030603010903060903 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090306030603010903060903-- From alexl@redhat.com Mon Jun 19 05:34:55 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0A03B3B00A5 for ; Mon, 19 Jun 2006 05:34:55 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-04 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 7FA463B00A4 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XWjY003333; Mon, 19 Jun 2006 05:33:32 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XRpk001435; Mon, 19 Jun 2006 05:33:27 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XQSo027998; Mon, 19 Jun 2006 05:33:27 -0400 Subject: Re: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Alexander Larsson To: Rubin In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Content-Type: text/plain Date: Mon, 19 Jun 2006 11:33:26 +0200 Message-Id: <1150709607.1962.31.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:34:55 -0000 On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel@gmail.com Sat Jun 17 22:37:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B99513B00B2 for ; Sat, 17 Jun 2006 22:37:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20627-08 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.227]) by menubar.gnome.org (Postfix) with ESMTP id 981F23B0089 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: by wr-out-0506.google.com with SMTP id 68so857489wra for ; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.152.12 with SMTP id z12mr4476063wrd; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.102.7 with HTTP; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Date: Sat, 17 Jun 2006 20:36:28 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org Subject: widget advice for nautilus view MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:37:24 -0000 I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl@redhat.com Mon Jun 19 05:32:52 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D5A93B0004 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-02 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DA9513B008F for ; Mon, 19 Jun 2006 05:32:50 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9VmqA002779; Mon, 19 Jun 2006 05:31:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9Vm0L001128; Mon, 19 Jun 2006 05:31:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9ViJV027920; Mon, 19 Jun 2006 05:31:45 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Joachim Noreiko In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="=-HvacVzLTIJ84Cz/f7LbQ" Date: Mon, 19 Jun 2006 11:31:44 +0200 Message-Id: <1150709505.1962.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:32:52 -0000 --=-HvacVzLTIJ84Cz/f7LbQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request@gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions1.png Content-Type: image/png; name=permissions1.png Content-Transfer-Encoding: base64 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 2Fgez04AAAAASUVORK5CYII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions2.png Content-Type: image/png; name=permissions2.png Content-Transfer-Encoding: base64 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 HMeyDhw7fhLv9Rvxe/CQq9eus2//AbX7k7VOgNr1G2eKPTfMzdP2rs//dZEzZ88zY/Y8eVloaBj/ XPkXADs7W7S10454unftzOMnT1i+cjVJScnIZDIe+gfkKUEpax8gOjqGCxf/JjU1FWdnJ2rWqM7i JX+SmJTE6zdvWLlqLV27dMp0Cmrtuo0kJCby6vVrVq9dR7eunXI8RaWsH+5urtStU4sp02by9Fkg MTEx3Lp1G9MyaUeUly7n/a6tjH0qiPpWrfYmISGBV69fs2bteoX9zSindjPGpeiz1y1RggH9erNk 6XJiY2N5ERzMug2b+G7IwDzHL+RekSSCsLBwZsycS+++g/A5cIhvvm7P5vVrM02TkJBAr74DMw3P AgOVlivau1Jm6qTxGBsbsXP3Xn7+cbh8BQa4/M8VlixbwZxZ03Es68DSxQvQ0dHml1/HE/nqVY71 WVlZcur4IQYN7EdYWBjjJvzGsP/9zKYt2/Bwd5NP979h3zFh3K/cuHGL5i3b8Pffl5g4fgzDv/9W 7dinT52EmZkpP4/8lfDwl+jp6eGzbyft27bBe91Guvfqy9gJk+TXX9TpT9Y6Ie1o7XEeli2Ag70d A/r3oW//wcydv4Axv4yQl8XFxzN67ESc3CqyYOFili1ZiJaWFlZWluzfs4Ojvidw8aiMR8WqjBj1 KykpuU8EytqHD3f5JCUlAbB+7Uqio2Nwr1CFOvUaU61qFSZPHCefXk9PD4lEQo3aDaheqz6elSsx fuyHi6fpOxJSqVRlP7xXr8DWxoZ6DZtSvVYDDh4+Srlyjgz//lt69hlAnQZNct3frH0qiPpSUlOp Uach1WvVp4pn5Uz9VSSndjPGpeizBxj76y+U93CnSrU6fN6qLd9/N1jcOlrEtACZOvfiL1swjRHj 5xAXm/u9cEEoaOVcK2QbN/m38fTuWbB/xKdIcHAI1tZWbN66nekz53D/9rUCq7u4+vbv1Wu0bN2O wMd+8utUH0tsQu7ExsayfuUChv40XuW0ppb2RfMHZYJQ0J743yvW9r3Xb2SN93r09fWZm89bWrMq 7r4p8zHHJuSdSASCkAfjxvzCuDG/FHcYBapG9WrF/pf6QvEQl+UFQRA0nEgEgiAIGk4kAkEQBA0n EoEgCIKGE4lAEARBw4lEIAiCoOFEIhAEQdBwIhEIgiBoOJEIBEEQNJxIBAUo62MwPxX5eTSloJhM JuPO3XssX7k630/dE4TC9EklAlNLe+zLuRdK3ddv3OT0mXOFUrem+eXXcdSo05CyzuVxdq9E3wFD eBEcnGmapKRkRo0ei4t7ZSp4VufPFatyVQ5pv/dTu35jnN0rUcGzOtNnzsk2jSKFXT9AxSo1GDTk e8ZNmCx/jnS68PCX9OwzAGf3SpSvXI1Zc+Yr/S1/deJN99vkaVjYOKqMT1Wdppb2OQ7pP1eujKIY 7vs9oFHTlvKH9zRo1JwDBw+rrE8oXOK3ht5r3rIN1tZW3LmR999xF9KUK+fIru+G4FjWgbdvo/jh 51F069GXc6ePyaeZOn0m9+77cfPaJd6+jaJVmw7Y2tjIf35YVfmq1d6s9l7Ptk3rKFfOkbdvozI9 mU2Vwq4f4N9L57l334+WrdtlK+vZZwC1a9Vg/dqVPH8RTIeOXTA2NuK7IYPyFG+6EydPc/josRzr yG2df53N/LjQXXv2cfrMWZVPDlMWg7WVFRvWrcbB3g4tLS32+xxk4qSpfNWmtVoxC4XjkzoiUMbf P4B2X3fB2b0SVnblaNS0JRcufnh494WLl2jW8kus7Zywc3Tjiy/by8tMLdMeGxkSEoqppT33/R4o bGfrtp00ad4KG3tn7BzdaNCoebZpfA4conLVWji5VWTHrj1qx5h+amnTlm1U8Kyebf7k5GTGTZiM s3slXNwrM33mHNwreGU6rePvH0Cnrj2xLeuKs3slxo6flGlvNDk5mTHjf6OcawVcPTyZNWd+tvjz e6rouyGDcCyb9khGY2Mjenbvyt179+XPxU1ISGDdhs0MH/YdBgYG2NhY069PT5YtX6VWeXJyMvN+ X8TY0SMpV85R3k7FCuXViq+w609XsmTOj5R8/PgJV69d53/DhiKVSinrYM/wYd+xes26PMWbLjQ0 jN8mT2Pe7Jx/DfXfq9cwtbQnISFBrTrLe7jLB9MyZdi6bQfLl/4hf3JYxvrUjaF0aWPKOtijpaVF QkICzwKD+KZjB4XLUCga/5lEEBMbS+tWn+Ozdycb163B3z+A4T/8LC8fOGQo9+8/YPNGb44c3Jvp 2b2X/joNgLm5GZf+Oo2zs1OObaxZu55hP/xMfHw8K5cvYYP3Kjp983WmaSJfvWL+gj/o2KEdb99G MXHSVLVjBAgLC2PX7n2M/XUU0dExmeZfsGgJy1eupmaN6uzcvgmZDCIiI+Xl0dExtOvYhavXrrNp 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 YII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions3.png Content-Type: image/png; name=permissions3.png Content-Transfer-Encoding: base64 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 iZ+aPf3U5P2hEBwSSkvT4O80Xkycd0Axm80/2qmkSqn6P7tuajSZcXF2wmjQnzuxDMD2+XeF0HYy BuOnZk8/NXl/KFyKdrmgTXkZPz6sDKqw/UuenVwQrFZb2y281JLIkPGzgRxQfiaQV7suDFY5AMuQ MeKQA8rPAf2fGZVx3pD3m2TIGHnIAeVnACvIU5QLhdxeMmSMOOSXFs4DOafzmBKVRG9v3/f6/YeA Vb4u7Po/FlB+DDoq4+eP/zqgZJ7IZkpUElOikoiISWHVZdewZ9+h7/28kVT8I8eO22UTXz/LEyFW q+Q6dOgw3r4BePsG4B8wmti4RD766JNB6UbyOnH8BN6+AWh7en7QvN/nOlc42X/wKFde+2ui4uYz O3kxN992F4XFpT9IV4qxdPUVvPPBJ/b7xqZmpkQl8cHHn9m51jYN0fELOJZ50m47Wm0ve/YdwmIZ uS8nlFdWMSUqiVdef1vCl5SWEzFr7nk942LIdTYMtP+IWXNJWbyau+75K+UVVRe9/IuNH7Itzxcj NkM5fmgHh3ZtYdKEcdz55wcwGAzf6zlTJk/kg7dewdVt5F6gPHFoJ2V5mfZLpfpxHn/+3rBaGeo/ gMryYirLi0iIj+eO399Jn043ZNqh/jOajOed1oqViOnT2PbNV7i6uV5Qvv827/f5b7glr63ffsdt d97DxvWryTy4g33bvyBy+jQ2XXfzDx5UUucmcfhIpv0+43gWAMdP5ti5fQePkJgwh+iZkXbbKS2r 4JY7/oTRaBr0zP8Wz7/8BiWl5d8r78WU62w4cWgnpWcyyD62h5eeeZSu7m42/OIGTp/J/8FkuBi4 FG15LoxYQFGgIDg4kPVrVmIwGOz2+uWWb1mx/iriUpaSNH8Fmz//2p7nxX//h5RFq5mdvJj1m64H oKy8kmtvvBW9Tnivor6hkd/c/kdikhYRk7SIvz782IjI2z8T2r33IGsvv464lKW8/tb7HDqSwerL rmHO3KW8+8FmSZ7s02dYueFqImPnce2Nt9LYNPTLVIeOZLB83S+YnbyY63/9O9o07d+rzKHaZyhY +/838LLxvj6+rFiejl5voFerZc/ufSQkphIWPol16y+npbkVrHDixEl8/IL48sstzJ6TyN1332fn tm3bTuq8hYybMJXnnnuRPbv3MTdlPuHjp/Dqq2+AFYqKilm9ZgO6Ph1Y4bHHn2JaRBRh4ZNIW7DE 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 tvrxfy1q6mPXqvNYAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions4.png Content-Type: image/png; name=permissions4.png Content-Transfer-Encoding: base64 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 yQv/D3ppEXAe/kOyAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ-- From alexl@redhat.com Mon Jun 19 08:41:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 006D43B09D7 for ; Mon, 19 Jun 2006 08:41:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11497-07 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F9AA3B0D96 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSaF8026601; Mon, 19 Jun 2006 08:28:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSZeG001636; Mon, 19 Jun 2006 08:28:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSYlg007366; Mon, 19 Jun 2006 08:28:35 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 14:28:35 +0200 Message-Id: <1150720115.16397.6.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 12:41:01 -0000 On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Mon Jun 19 10:47:50 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D3523B00D8 for ; Mon, 19 Jun 2006 10:47:50 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15911-05 for ; Mon, 19 Jun 2006 10:47:47 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id E9A213B0017 for ; Mon, 19 Jun 2006 10:47:46 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDndPq023522; Mon, 19 Jun 2006 09:49:39 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDnd7B020926; Mon, 19 Jun 2006 09:49:39 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDncHK013361; Mon, 19 Jun 2006 09:49:38 -0400 Subject: Re: widget advice for nautilus view From: Alexander Larsson To: Mark Kegel In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Content-Type: text/plain Date: Mon, 19 Jun 2006 15:49:38 +0200 Message-Id: <1150724978.16397.9.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 14:47:50 -0000 On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris@gnome-de.org Mon Jun 19 11:24:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3C37C3B0734 for ; Mon, 19 Jun 2006 11:24:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17721-01 for ; Mon, 19 Jun 2006 11:24:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 6A67C3B0832 for ; Mon, 19 Jun 2006 11:23:59 -0400 (EDT) Received: (qmail 2563 invoked by uid 85); 19 Jun 2006 15:23:03 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.155.81):. Processed in 0.207799 secs); 19 Jun 2006 15:23:03 -0000 Received: from p54969b51.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.155.81) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 19 Jun 2006 15:23:03 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:22:57 +0200 Message-Id: <1150730577.5245.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:24:07 -0000 Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl@redhat.com Mon Jun 19 11:55:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11E2B3B0924 for ; Mon, 19 Jun 2006 11:55:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18742-04 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9EBE23B03A9 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsBQf010743; Mon, 19 Jun 2006 11:54:11 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsAf3026315; Mon, 19 Jun 2006 11:54:10 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFs9M3009507; Mon, 19 Jun 2006 11:54:10 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:54:09 +0200 Message-Id: <1150732450.16397.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:55:11 -0000 On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl@redhat.com Tue Jun 20 04:09:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8B05B3B027F for ; Tue, 20 Jun 2006 04:09:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01941-05 for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 251463B027D for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K8916A009982; Tue, 20 Jun 2006 04:09:01 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K891t6001277; Tue, 20 Jun 2006 04:09:01 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K890Lx026400; Tue, 20 Jun 2006 04:09:00 -0400 Subject: Re: Overlapping icons, again From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Tue, 20 Jun 2006 10:09:00 +0200 Message-Id: <1150790940.16397.21.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 08:09:53 -0000 On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf@cbk.poznan.pl Tue Jun 20 09:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CA3763B044D for ; Tue, 20 Jun 2006 09:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17248-03 for ; Tue, 20 Jun 2006 09:13:42 -0400 (EDT) Received: from goliath.sylaba.poznan.pl (goliath.sylaba.poznan.pl [193.151.36.3]) by menubar.gnome.org (Postfix) with ESMTP id 25DD03B02A4 for ; Tue, 20 Jun 2006 09:13:41 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 97AC818D1E4; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from goliath.sylaba.poznan.pl ([127.0.0.1]) by localhost (goliath.sylaba.poznan.pl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 89603-01-62; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (ip-83-238-212-180.netia.com.pl [83.238.212.180]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 2C66318D1D2; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (venus.local.navi.pl [192.168.1.10]) by venus.local.navi.pl (8.13.1/8.13.1) with ESMTP id k5KDBxws022710; Tue, 20 Jun 2006 15:12:09 +0200 Subject: Re: New permissions page From: Olaf =?iso-8859-2?Q?Fr=B1czyk?= To: Alexander Larsson In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:11:58 +0200 Message-Id: <1150809118.17794.51.camel@venus.local.navi.pl> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at sylaba.poznan.pl X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.783 tagged_above=-999 required=2 tests=[AWL=-0.537, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_FAIL=1.142, TW_RW=0.077] X-Spam-Score: -1.783 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 13:13:45 -0000 On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf FrÄ…czyk From alexl@redhat.com Tue Jun 20 10:12:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2BAB13B02A4 for ; Tue, 20 Jun 2006 10:12:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19006-06 for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 478C83B03CF for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdm3v023018; Tue, 20 Jun 2006 09:39:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdmHs006573; Tue, 20 Jun 2006 09:39:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdk56015503; Tue, 20 Jun 2006 09:39:47 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Olaf =?UTF-8?Q?Fr=C4=85czyk?= In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:39:46 +0200 Message-Id: <1150810787.16397.40.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.55 tagged_above=-999 required=2 tests=[AWL=-0.026, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_RW=0.077] X-Spam-Score: -2.55 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 14:12:11 -0000 On Tue, 2006-06-20 at 15:11 +0200, Olaf FrÄ…czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris@gnome-de.org Tue Jun 20 13:59:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0F8003B00DD for ; Tue, 20 Jun 2006 13:59:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02118-05 for ; Tue, 20 Jun 2006 13:59:18 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 1655F3B000C for ; Tue, 20 Jun 2006 13:59:17 -0400 (EDT) Received: (qmail 68748 invoked by uid 85); 20 Jun 2006 17:58:56 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.204.200):. Processed in 2.796389 secs); 20 Jun 2006 17:58:56 -0000 Received: from p5496ccc8.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.204.200) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 20 Jun 2006 17:58:53 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Content-Type: multipart/mixed; boundary="=-bgJ4fvimCkwAPOVjBPdI" Date: Tue, 20 Jun 2006 19:58:49 +0200 Message-Id: <1150826329.5240.5.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.471 tagged_above=-999 required=2 tests=[AWL=-0.103, BAYES_00=-2.599, TW_GD=0.077, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.471 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 17:59:20 -0000 --=-bgJ4fvimCkwAPOVjBPdI Content-Type: text/plain Content-Transfer-Encoding: 7bit Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair --=-bgJ4fvimCkwAPOVjBPdI Content-Disposition: attachment; filename=nautilus-sm3.diff Content-Type: text/x-patch; name=nautilus-sm3.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.227 diff -u -p -r1.227 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 14:19:55 -0000 1.227 +++ libnautilus-private/nautilus-global-preferences.c 20 Jun 2006 17:52:00 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.133 diff -u -p -r1.133 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 14:19:55 -0000 1.133 +++ libnautilus-private/nautilus-global-preferences.h 20 Jun 2006 17:52:01 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 20 Jun 2006 17:52:06 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 20 Jun 2006 17:52:18 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -615,8 +621,13 @@ nautilus_application_startup (NautilusAp Nautilus_Shell_open_windows (shell, url_list, corba_startup_id, corba_geometry, browser_window, &ev); CORBA_free (url_list); } else if (!no_default_window) { + g_assert (session_to_load == NULL); Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1140,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1173,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1327,263 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[3] = { NULL }; + + argv[0] = "nautilus"; + + argv[2] = save_session_to_file (); + if (argv[2] != NULL) { + argv[1] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[2] != NULL) { + g_free (argv[2]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 20 Jun 2006 17:52:18 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 20 Jun 2006 17:52:20 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,9 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + /* Translators: --no-default-window is a nautilus command line parameter, don't modify it. */ + N_("Load a saved session from the specified file. Implies \"--no-default-window\"."), N_("FILENAME") }, { NULL } }; @@ -243,6 +247,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -262,6 +267,10 @@ main (int argc, char *argv[]) GNOME_PARAM_HUMAN_READABLE_NAME, _("Nautilus"), NULL); + if (session_to_load != NULL) { + no_default_window = TRUE; + } + /* Do this here so that gdk_display is initialized */ if (startup_id_copy == NULL) { /* Create a fake one containing a timestamp that we can use */ @@ -349,6 +358,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 20 Jun 2006 17:52:25 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 20 Jun 2006 17:52:25 -0000 @@ -17,6 +17,7 @@ module Nautilus { void stop_desktop (); void quit (); void restart (); + void load_session (in string filename); }; }; Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 20 Jun 2006 17:52:26 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 20 Jun 2006 17:52:31 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 20 Jun 2006 17:52:36 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 20 Jun 2006 17:52:37 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 20 Jun 2006 17:52:43 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-bgJ4fvimCkwAPOVjBPdI-- From alexl@redhat.com Wed Jun 21 03:27:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 58AA43B0D06 for ; Wed, 21 Jun 2006 03:27:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16837-02 for ; Wed, 21 Jun 2006 03:27:06 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C69353B041C for ; Wed, 21 Jun 2006 03:27:05 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7R0RA028083; Wed, 21 Jun 2006 03:27:00 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QuFv031841; Wed, 21 Jun 2006 03:26:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QrI9014055; Wed, 21 Jun 2006 03:26:55 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150826329.5240.5.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 09:26:53 +0200 Message-Id: <1150874813.16397.58.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 07:27:07 -0000 On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > The session restart command includes > > > "--no-default-window" (nautilus-application.c:save_session). > > > > I guess that is good enough, although we could also always do that when > > specifying a session. Its unlikely that people would use the session > > switch manually though, so it doesn't really matter. > > New patch attached, which takes into account your other worthy > suggestions and makes --load-session imply presence of > --no-default-window. Looks good to commit then. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish sweet-toothed grifter from the 'hood. She's a violent impetuous bounty hunter who dreams of becoming Elvis. They fight crime! From carey@internode.on.net Tue Jun 20 08:48:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 355CC3B04D7 for ; Tue, 20 Jun 2006 08:48:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15989-01 for ; Tue, 20 Jun 2006 08:48:52 -0400 (EDT) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by menubar.gnome.org (Postfix) with ESMTP id 42D563B0510 for ; Tue, 20 Jun 2006 08:48:51 -0400 (EDT) Received: from [192.168.1.24] (ppp7-187.lns1.syd7.internode.on.net [59.167.7.187]) by smtp3.adl2.internode.on.net (8.13.6/8.13.5) with ESMTP id k5KCll85011167 for ; Tue, 20 Jun 2006 22:17:48 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org Content-Type: text/plain Date: Tue, 20 Jun 2006 22:47:47 +1000 Message-Id: <1150807667.5243.53.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-Mailman-Approved-At: Wed, 21 Jun 2006 08:27:09 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 12:48:53 -0000 Hi, I have remote drives mounted via NFS/SMB/etc on my laptops, and due to these remote directories being mounted, nautilus thinks they are local, and tries to generate previews for everything (very much not fun over a 256kbit or 512kbit uplink). Anyone know if there is a gconf setting or some way to get nautilus to be smarter about this and detect remote directories automatically (ie. partition not local, so therefore remote, then don't show preview)? Or at the least, a way to manually disable previews on a per-directory basis? Any ideas are appreciated. From chris@gnome-de.org Wed Jun 21 12:26:19 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 942C13B0F02 for ; Wed, 21 Jun 2006 12:26:19 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20942-09 for ; Wed, 21 Jun 2006 12:26:16 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id A4DE83B0FEE for ; Wed, 21 Jun 2006 12:26:15 -0400 (EDT) Received: (qmail 75238 invoked by uid 85); 21 Jun 2006 16:26:09 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.201671 secs); 21 Jun 2006 16:26:09 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 16:26:09 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150874813.16397.58.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> <1150874813.16397.58.camel@greebo> Content-Type: text/plain Date: Wed, 21 Jun 2006 18:25:54 +0200 Message-Id: <1150907154.5245.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:26:19 -0000 Am Mittwoch, den 21.06.2006, 09:26 +0200 schrieb Alexander Larsson: > On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > > > The session restart command includes > > > > "--no-default-window" (nautilus-application.c:save_session). > > > > > > I guess that is good enough, although we could also always do that when > > > specifying a session. Its unlikely that people would use the session > > > switch manually though, so it doesn't really matter. > > > > New patch attached, which takes into account your other worthy > > suggestions and makes --load-session imply presence of > > --no-default-window. > > Looks good to commit then. Done :). -- Christian Neumair From chris@gnome-de.org Wed Jun 21 15:37:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 850B73B0090 for ; Wed, 21 Jun 2006 15:37:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00594-08 for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 40A563B007C for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: (qmail 73397 invoked by uid 85); 21 Jun 2006 19:37:12 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.304044 secs); 21 Jun 2006 19:37:12 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:37:12 -0000 Subject: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-rdcaTTcK9Z9jAJx6/pO4" Date: Wed, 21 Jun 2006 21:37:08 +0200 Message-Id: <1150918628.5245.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:37:28 -0000 --=-rdcaTTcK9Z9jAJx6/pO4 Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch should fix issues where handlers registered with GtkActionGroups override those registered with child widgets, cf. bug 345528 [1]. [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 -- Christian Neumair --=-rdcaTTcK9Z9jAJx6/pO4 Content-Disposition: attachment; filename=nautilus-window-keybindings.diff Content-Type: text/x-patch; name=nautilus-window-keybindings.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.465 diff -u -p -r1.465 nautilus-window.c --- src/nautilus-window.c 21 Jun 2006 16:26:23 -0000 1.465 +++ src/nautilus-window.c 21 Jun 2006 19:31:34 -0000 @@ -742,6 +742,35 @@ nautilus_window_realize (GtkWidget *widg update_cursor (NAUTILUS_WINDOW (widget)); } +/* try to propagate key press event to children before handling + * mnemonics related to action groups. This is for instance relevant + * when the GtkAction file deletion keybinding would be activated + * instead of the rename widget text deletion keybinding. + */ +static gint +nautilus_window_key_press_event (GtkWidget *widget, + GdkEventKey *event) +{ + GtkWindow *window = GTK_WINDOW (widget); + + if (!gtk_window_propagate_key_event (window, event) && + !gtk_window_activate_key (window, event)) { + /* skip GtkWindow handler, directly use GtkWidget method */ + + static GtkWidgetClass *gtk_widget_class = NULL; + if (gtk_widget_class == NULL) { + gtk_widget_class = g_type_class_peek (gtk_widget_get_type ()); + g_assert (gtk_widget_class != NULL); + g_assert (gtk_widget_class->key_press_event != NULL); + } + + return GTK_WIDGET_CLASS (gtk_widget_class)->key_press_event (widget, event); + } + + return TRUE; + +} + /* * Main API */ @@ -1583,6 +1612,7 @@ nautilus_window_class_init (NautilusWind GTK_WIDGET_CLASS (class)->show = nautilus_window_show; GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request; GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize; + GTK_WIDGET_CLASS (class)->key_press_event = nautilus_window_key_press_event; class->add_current_location_to_history_list = real_add_current_location_to_history_list; class->get_title = real_get_title; class->set_title = real_set_title; --=-rdcaTTcK9Z9jAJx6/pO4-- From chris@gnome-de.org Wed Jun 21 15:51:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B0923B00E2 for ; Wed, 21 Jun 2006 15:51:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01297-07 for ; Wed, 21 Jun 2006 15:51:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 566013B01E2 for ; Wed, 21 Jun 2006 15:50:59 -0400 (EDT) Received: (qmail 5765 invoked by uid 85); 21 Jun 2006 19:50:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 2.075383 secs); 21 Jun 2006 19:50:58 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:50:54 -0000 Subject: Re: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list In-Reply-To: <1150918628.5245.9.camel@localhost.localdomain> References: <1150918628.5245.9.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 21:50:50 +0200 Message-Id: <1150919450.5245.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:51:01 -0000 Am Mittwoch, den 21.06.2006, 21:37 +0200 schrieb Christian Neumair: > The attached patch should fix issues where handlers registered with > GtkActionGroups override those registered with child widgets, cf. bug > 345528 [1]. > > [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 It seems to break keynav in subtle ways, and requires a stricter modifier mask checking for our custom widgets (icon container etc.) which for instance eats alt+arrow key. -- Christian Neumair From patrick.jacquotf@free.fr Wed Jun 21 17:59:06 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4E9CA3B04CB for ; Wed, 21 Jun 2006 17:59:06 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08416-10 for ; Wed, 21 Jun 2006 17:59:05 -0400 (EDT) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by menubar.gnome.org (Postfix) with ESMTP id C303B3B0429 for ; Wed, 21 Jun 2006 17:59:04 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp4-g19.free.fr (Postfix) with ESMTP id CF45454943; Wed, 21 Jun 2006 23:59:01 +0200 (CEST) Subject: Re: Nautilus remote previews From: Patrick Jacquot To: Carey O'Shea In-Reply-To: <1150807667.5243.53.camel@carey-laptop> References: <1150807667.5243.53.camel@carey-laptop> Content-Type: text/plain; charset=utf-8 Date: Wed, 21 Jun 2006 23:58:55 +0200 Message-Id: <1150927136.12639.8.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.5) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.578 tagged_above=-999 required=2 tests=[AWL=0.021, BAYES_00=-2.599] X-Spam-Score: -2.578 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 21:59:06 -0000 Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > Hi, > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > these remote directories being mounted, nautilus thinks they are local, > and tries to generate previews for everything (very much not fun over a > 256kbit or 512kbit uplink). > > Anyone know if there is a gconf setting or some way to get nautilus to > be smarter about this and detect remote directories automatically (ie. > partition not local, so therefore remote, then don't show preview)? > > Or at the least, a way to manually disable previews on a per-directory > basis? > > Any ideas are appreciated. > > In the Nautilus preferences, tab "previews", you can ask the previews for "only local files"; separately for sound files and for "other previews" i.e. images. There are three choices for each category: _ never - always - for local files only HTH -- Patrick From carey@internode.on.net Thu Jun 22 02:11:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7BCC3B02D2 for ; Thu, 22 Jun 2006 02:11:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32425-06 for ; Thu, 22 Jun 2006 02:11:17 -0400 (EDT) Received: from ash25e.internode.on.net (ash25e.internode.on.net [203.16.214.182]) by menubar.gnome.org (Postfix) with ESMTP id 0FB013B0234 for ; Thu, 22 Jun 2006 02:11:16 -0400 (EDT) Received: from [192.168.1.2] (ppp19-139.lns2.syd7.internode.on.net [59.167.19.139]) by ash25e.internode.on.net (8.13.6/8.13.5) with ESMTP id k5M6BEqD069510 for ; Thu, 22 Jun 2006 15:41:14 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Re: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org In-Reply-To: <1150927136.12639.8.camel@proton> References: <1150807667.5243.53.camel@carey-laptop> <1150927136.12639.8.camel@proton> Content-Type: text/plain; charset=UTF-8 Date: Thu, 22 Jun 2006 16:11:13 +1000 Message-Id: <1150956674.22582.4.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:11:20 -0000 Thanks for your reply. My problem is that the "Local Files Only" option does not work with remotely mounted SMB directories. Is this problem known? Regards, Carey. On Wed, 2006-06-21 at 23:58 +0200, Patrick Jacquot wrote: > Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > > Hi, > > > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > > these remote directories being mounted, nautilus thinks they are local, > > and tries to generate previews for everything (very much not fun over a > > 256kbit or 512kbit uplink). > > > > Anyone know if there is a gconf setting or some way to get nautilus to > > be smarter about this and detect remote directories automatically (ie. > > partition not local, so therefore remote, then don't show preview)? > > > > Or at the least, a way to manually disable previews on a per-directory > > basis? > > > > Any ideas are appreciated. > > > > > In the Nautilus preferences, tab "previews", you can ask the previews > for "only local files"; separately for sound files and for > "other previews" i.e. images. There are three choices for each category: > _ never > - always > - for local files only > HTH From alan.gibson@gmail.com Thu Jun 22 02:26:00 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4B0F33B02AB for ; Thu, 22 Jun 2006 02:26:00 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01065-01 for ; Thu, 22 Jun 2006 02:25:59 -0400 (EDT) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by menubar.gnome.org (Postfix) with ESMTP id 6C3993B026A for ; Thu, 22 Jun 2006 02:25:58 -0400 (EDT) Received: by nf-out-0910.google.com with SMTP id h2so219295nfe for ; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.241.6 with SMTP id o6mr1278015nfh; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.231.16 with HTTP; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Message-ID: Date: Wed, 21 Jun 2006 23:25:57 -0700 From: "Alan Gibson" To: nautilus-list@gnome.org Subject: not landing in SFTP home directory MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:26:00 -0000 hello all. first post, good to be here. gnome, and by extension nautilus, are excellent apps. now to the problem: when i access an SFTP server added via "Connect to Server..." the default directory is the root of the server, not my home directory. the same operation with `sftp` lands me in my home directory. this behavior makes "connect to server" unusable for many users. this was filed as a bug, along with another problem, here: http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. anyone have any idea of the status of this, or if it this behavior is going to stay this way? thanks much, alan From alexl@redhat.com Thu Jun 22 03:43:59 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CED983B018C for ; Thu, 22 Jun 2006 03:43:59 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05592-05 for ; Thu, 22 Jun 2006 03:43:57 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 025A73B021B for ; Thu, 22 Jun 2006 03:43:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7huku029640; Thu, 22 Jun 2006 03:43:56 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7hugX028990; Thu, 22 Jun 2006 03:43:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7ht6g030438; Thu, 22 Jun 2006 03:43:55 -0400 Subject: Re: not landing in SFTP home directory From: Alexander Larsson To: Alan Gibson In-Reply-To: References: Content-Type: text/plain Date: Thu, 22 Jun 2006 09:43:54 +0200 Message-Id: <1150962235.16397.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 07:44:00 -0000 On Wed, 2006-06-21 at 23:25 -0700, Alan Gibson wrote: > hello all. first post, good to be here. gnome, and by extension > nautilus, are excellent apps. > > now to the problem: > > when i access an SFTP server added via "Connect to Server..." the > default directory is the root of the server, not my home directory. > the same operation with `sftp` lands me in my home directory. this > behavior makes "connect to server" unusable for many users. > > this was filed as a bug, along with another problem, here: > http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed > against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. > > anyone have any idea of the status of this, or if it this behavior is > going to stay this way? Its clearly a bug, so hopefully it'll get fixed eventually. The reason its not fixed is the standard "not enough resources" one. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a gun-slinging crooked card sharp plagued by the memory of his family's brutal murder. She's a provocative belly-dancing soap star married to the Mob. They fight crime! From chris@gnome-de.org Thu Jun 22 16:19:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 6CB943B0357 for ; Thu, 22 Jun 2006 16:19:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23663-07 for ; Thu, 22 Jun 2006 16:19:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 036763B0859 for ; Thu, 22 Jun 2006 16:18:04 -0400 (EDT) Received: (qmail 80585 invoked by uid 85); 22 Jun 2006 20:17:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.147.150):. Processed in 3.06236 secs); 22 Jun 2006 20:17:58 -0000 Received: from p54969396.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.147.150) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 22 Jun 2006 20:17:55 -0000 Subject: [PATCH] allow to drop URIs, URLs and text to subfolders From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-wko5hNaIXKFzt/OLy/jx" Date: Thu, 22 Jun 2006 22:17:51 +0200 Message-Id: <1151007472.19595.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 20:19:11 -0000 --=-wko5hNaIXKFzt/OLy/jx Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch considers subfolders as drop targets for non-GNOME Icon List drag data that refers to files. -- Christian Neumair --=-wko5hNaIXKFzt/OLy/jx Content-Disposition: attachment; filename=nautilus-dnd.diff Content-Type: text/x-patch; name=nautilus-dnd.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-file-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.c,v retrieving revision 1.7 diff -u -p -r1.7 nautilus-file-dnd.c --- libnautilus-private/nautilus-file-dnd.c 12 Dec 2005 16:59:10 -0000 1.7 +++ libnautilus-private/nautilus-file-dnd.c 22 Jun 2006 19:52:31 -0000 @@ -32,19 +32,14 @@ #include #include -gboolean -nautilus_drag_can_accept_item (NautilusFile *drop_target_item, - const char *item_uri) +static gboolean +nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; - gboolean res; - - if (nautilus_file_matches_uri (drop_target_item, item_uri)) { - /* can't accept itself */ - return FALSE; - } - + if (nautilus_file_is_directory (drop_target_item)) { + gboolean res; + /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); @@ -68,7 +63,19 @@ nautilus_drag_can_accept_item (NautilusF return FALSE; } - + +gboolean +nautilus_drag_can_accept_item (NautilusFile *drop_target_item, + const char *item_uri) +{ + if (nautilus_file_matches_uri (drop_target_item, item_uri)) { + /* can't accept itself */ + return FALSE; + } + + return nautilus_drag_can_accept_files (drop_target_item); +} + gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items) @@ -92,6 +99,39 @@ nautilus_drag_can_accept_items (Nautilus } return TRUE; +} + +gboolean +nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items) +{ + switch (drag_type) { + case NAUTILUS_ICON_DND_GNOME_ICON_LIST: + return nautilus_drag_can_accept_items (drop_target_item, items); + + case NAUTILUS_ICON_DND_URI_LIST: + case NAUTILUS_ICON_DND_URL: + case NAUTILUS_ICON_DND_TEXT: + return nautilus_drag_can_accept_files (drop_target_item); + + case NAUTILUS_ICON_DND_KEYWORD: + return TRUE; + + case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: + return FALSE; + + /* TODO return TRUE for folders as soon as drop handling is implemented */ + case NAUTILUS_ICON_DND_COLOR: + case NAUTILUS_ICON_DND_BGIMAGE: + case NAUTILUS_ICON_DND_RESET_BACKGROUND: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } + } void Index: libnautilus-private/nautilus-file-dnd.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.h,v retrieving revision 1.5 diff -u -p -r1.5 nautilus-file-dnd.h --- libnautilus-private/nautilus-file-dnd.h 22 Feb 2002 18:54:15 -0000 1.5 +++ libnautilus-private/nautilus-file-dnd.h 22 Jun 2006 19:52:31 -0000 @@ -25,6 +25,7 @@ #ifndef NAUTILUS_FILE_DND_H #define NAUTILUS_FILE_DND_H +#include #include #define NAUTILUS_FILE_DND_ERASE_KEYWORD "erase" @@ -33,6 +34,9 @@ gboolean nautilus_drag_can_accept_item const char *item_uri); gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items); +gboolean nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items); void nautilus_drag_file_receive_dropped_keyword (NautilusFile *file, const char *keyword); Index: libnautilus-private/nautilus-icon-container.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v retrieving revision 1.415 diff -u -p -r1.415 nautilus-icon-container.c --- libnautilus-private/nautilus-icon-container.c 15 May 2006 22:55:24 -0000 1.415 +++ libnautilus-private/nautilus-icon-container.c 22 Jun 2006 19:53:16 -0000 @@ -4596,8 +4604,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4609,8 +4618,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4622,8 +4632,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: libnautilus-private/nautilus-icon-container.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.h,v retrieving revision 1.92 diff -u -p -r1.92 nautilus-icon-container.h --- libnautilus-private/nautilus-icon-container.h 15 May 2006 22:55:24 -0000 1.92 +++ libnautilus-private/nautilus-icon-container.h 22 Jun 2006 19:53:18 -0000 Index: libnautilus-private/nautilus-icon-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-dnd.c,v retrieving revision 1.154 diff -u -p -r1.154 nautilus-icon-dnd.c --- libnautilus-private/nautilus-icon-dnd.c 15 May 2006 22:55:24 -0000 1.154 +++ libnautilus-private/nautilus-icon-dnd.c 22 Jun 2006 19:53:21 -0000 @@ -84,6 +84,10 @@ static void dnd_highlight_queue_redr static GtkTargetList *drop_types_list = NULL; static GtkTargetList *drop_types_list_root = NULL; +static char * nautilus_icon_container_find_drop_target (NautilusIconContainer *container, + GdkDragContext *context, + int x, int y, gboolean *icon_hit); + static EelCanvasItem * create_selection_shadow (NautilusIconContainer *container, GList *list) @@ -618,44 +622,65 @@ receive_dropped_keyword (NautilusIconCon /* handle dropped url */ static void -receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y) +receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragContext *context, int x, int y) { + char *drop_target; + if (encoded_url == NULL) { return; } + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_url", encoded_url, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped uri list */ static void -receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y) +receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragContext *context, int x, int y) { + char *drop_target; + if (uri_list == NULL) { return; } - + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_uri_list", uri_list, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped text */ static void -receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragAction action, int x, int y) +receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragContext *context, int x, int y) { + char *drop_target; + if (text == NULL) { return; } + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); g_signal_emit_by_name (container, "handle_text", text, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } static int @@ -843,7 +868,7 @@ handle_local_move (NautilusIconContainer nautilus_icon_container_add (container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - FALSE); + FALSE, FALSE); icon = nautilus_icon_container_get_icon_by_uri (container, item->uri); @@ -939,8 +964,11 @@ nautilus_icon_container_find_drop_target NautilusFile *file; char *icon_uri; - *icon_hit = FALSE; - if (container->details->dnd_info->drag_info.selection_list == NULL) { + if (icon_hit) { + *icon_hit = FALSE; + } + + if (!container->details->dnd_info->drag_info.got_drop_data_type) { return NULL; } @@ -959,8 +987,9 @@ nautilus_icon_container_find_drop_target if (icon_uri != NULL) { file = nautilus_file_get (icon_uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { /* the item we dropped our selection on cannot accept the items, * do the same thing as if we just dropped the items on the canvas */ @@ -973,11 +1002,16 @@ nautilus_icon_container_find_drop_target } if (drop_target_icon == NULL) { - *icon_hit = FALSE; + if (icon_hit) { + *icon_hit = FALSE; + } + return get_container_uri (container); } - *icon_hit = TRUE; + if (icon_hit) { + *icon_hit = TRUE; + } return nautilus_icon_container_get_icon_drop_target_uri (container, drop_target_icon); } @@ -1177,10 +1211,6 @@ nautilus_icon_dnd_update_drop_target (Na char *uri; g_assert (NAUTILUS_IS_ICON_CONTAINER (container)); - if ((container->details->dnd_info->drag_info.selection_list == NULL) - && (container->details->dnd_info->drag_info.data_type != NAUTILUS_ICON_DND_KEYWORD)) { - return; - } canvas_widget_to_world (EEL_CANVAS (container), x, y, &world_x, &world_y); @@ -1199,8 +1229,9 @@ nautilus_icon_dnd_update_drop_target (Na file = nautilus_file_get (uri); g_free (uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { icon = NULL; } @@ -1642,20 +1673,20 @@ drag_data_received_callback (GtkWidget * case NAUTILUS_ICON_DND_URL: receive_dropped_url (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_URI_LIST: receive_dropped_uri_list (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_TEXT: tmp = gtk_selection_data_get_text (data); receive_dropped_text (NAUTILUS_ICON_CONTAINER (widget), - (char *) tmp, context->action, x, y); + (char *) tmp, context, x, y); success = TRUE; g_free (tmp); break; Index: libnautilus-private/nautilus-marshal.list =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-marshal.list,v retrieving revision 1.11 diff -u -p -r1.11 nautilus-marshal.list --- libnautilus-private/nautilus-marshal.list 12 Dec 2005 16:59:10 -0000 1.11 +++ libnautilus-private/nautilus-marshal.list 22 Jun 2006 19:53:27 -0000 @@ -16,5 +16,6 @@ VOID:POINTER,POINTER VOID:POINTER,POINTER,POINTER,ENUM,INT,INT VOID:POINTER,STRING VOID:POINTER,STRING,ENUM,INT,INT +VOID:STRING,STRING,ENUM,INT,INT VOID:STRING,ENUM,INT,INT VOID:STRING,STRING Index: libnautilus-private/nautilus-tree-view-drag-dest.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-tree-view-drag-dest.c,v retrieving revision 1.14 diff -u -p -r1.14 nautilus-tree-view-drag-dest.c --- libnautilus-private/nautilus-tree-view-drag-dest.c 27 Feb 2006 21:54:58 -0000 1.14 +++ libnautilus-private/nautilus-tree-view-drag-dest.c 22 Jun 2006 19:53:31 -0000 @@ -306,7 +306,7 @@ get_drop_path (NautilusTreeViewDragDest NautilusFile *file; GtkTreePath *ret; - if (!path) { + if (!path || !dest->details->have_drag_data) { return NULL; } @@ -315,7 +315,9 @@ get_drop_path (NautilusTreeViewDragDest /* Go up the tree until we find a file that can accept a drop */ while (file == NULL /* dummy row */ || - !nautilus_drag_can_accept_items (file, dest->details->drag_list)) { + !nautilus_drag_can_accept_info (file, + dest->details->drag_type, + dest->details->drag_list)) { if (gtk_tree_path_get_depth (ret) == 1) { gtk_tree_path_free (ret); ret = NULL; @@ -333,8 +335,8 @@ get_drop_path (NautilusTreeViewDragDest } static char * -get_drop_target (NautilusTreeViewDragDest *dest, - GtkTreePath *path) +get_drop_target_uri_for_path (NautilusTreeViewDragDest *dest, + GtkTreePath *path) { NautilusFile *file; char *target; @@ -366,7 +368,7 @@ get_drop_action (NautilusTreeViewDragDes switch (dest->details->drag_type) { case NAUTILUS_ICON_DND_GNOME_ICON_LIST : - drop_target = get_drop_target (dest, path); + drop_target = get_drop_target_uri_for_path (dest, path); if (!drop_target) { return 0; @@ -383,9 +385,27 @@ get_drop_action (NautilusTreeViewDragDes return action; case NAUTILUS_ICON_DND_URL: - return nautilus_drag_default_drop_action_for_url (context); + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + action = nautilus_drag_default_drop_action_for_url (context); + + g_free (drop_target); + + return action; case NAUTILUS_ICON_DND_URI_LIST : + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + g_free (drop_target); + return context->suggested_action; case NAUTILUS_ICON_DND_TEXT: @@ -497,24 +517,43 @@ drag_leave_callback (GtkWidget *widget, remove_expand_timeout (dest); } -static void -receive_uris (NautilusTreeViewDragDest *dest, - GdkDragContext *context, - GList *source_uris, - int x, int y) +static char * +get_drop_target_uri_at_pos (NautilusTreeViewDragDest *dest, int x, int y) { char *drop_target; GtkTreePath *path; GtkTreePath *drop_path; GtkTreeViewDropPosition pos; - GdkDragAction action; gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, &path, &pos); drop_path = get_drop_path (dest, path); - drop_target = get_drop_target (dest, drop_path); + drop_target = get_drop_target_uri_for_path (dest, drop_path); + + if (path != NULL) { + gtk_tree_path_free (path); + } + + if (drop_path != NULL) { + gtk_tree_path_free (drop_path); + } + + return drop_target; +} + +static void +receive_uris (NautilusTreeViewDragDest *dest, + GdkDragContext *context, + GList *source_uris, + int x, int y) +{ + char *drop_target; + GdkDragAction action; + + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); if (context->action == GDK_ACTION_ASK) { if (nautilus_drag_selection_includes_special_link (dest->details->drag_list)) { @@ -540,14 +579,6 @@ receive_uris (NautilusTreeViewDragDest * x, y); } - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target); } @@ -583,14 +614,22 @@ receive_dropped_uri_list (NautilusTreeVi GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URI_LIST], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -598,18 +637,24 @@ receive_dropped_text (NautilusTreeViewDr GdkDragContext *context, int x, int y) { + char *drop_target; char *text; if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + text = gtk_selection_data_get_text (dest->details->drag_data); g_signal_emit (dest, signals[HANDLE_TEXT], 0, - (char *) text, + (char *) text, drop_target, context->action, x, y); + g_free (text); + g_free (drop_target); } @@ -618,14 +663,22 @@ receive_dropped_url (NautilusTreeViewDra GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URL], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -634,15 +687,14 @@ receive_dropped_keyword (NautilusTreeVie int x, int y) { char *drop_target_uri; - GtkTreePath *path, *drop_path; NautilusFile *drop_target_file; - gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, - &path, NULL); - - drop_path = get_drop_path (dest, path); + if (!dest->details->drag_data) { + return; + } - drop_target_uri = get_drop_target (dest, drop_path); + drop_target_uri = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target_uri != NULL); drop_target_file = nautilus_file_get (drop_target_uri); @@ -652,15 +704,6 @@ receive_dropped_keyword (NautilusTreeVie nautilus_file_unref (drop_target_file); } - - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target_uri); } @@ -854,8 +897,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -867,8 +911,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -880,8 +925,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.745 diff -u -p -r1.745 fm-directory-view.c --- src/file-manager/fm-directory-view.c 16 Jun 2006 15:40:18 -0000 1.745 +++ src/file-manager/fm-directory-view.c 22 Jun 2006 20:08:33 -0000 @@ -1415,7 +1415,7 @@ action_new_empty_file_callback (GtkActio { g_assert (FM_IS_DIRECTORY_VIEW (callback_data)); - fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL); + fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL, NULL); } static void @@ -4217,36 +4217,45 @@ setup_new_folder_data (FMDirectoryView * static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, + const char *parent_uri, const char *initial_contents) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; + + g_assert (parent_uri != NULL); data = setup_new_folder_data (directory_view); pos = context_menu_to_file_operation_position (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), pos, parent_uri, initial_contents, new_folder_done, data); - - g_free (parent_uri); } void fm_directory_view_new_file (FMDirectoryView *directory_view, + const char *parent_uri, NautilusFile *source) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; char *source_uri; + char *container_uri; + + container_uri = NULL; + if (parent_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (directory_view); + g_assert (container_uri != NULL); + } if (source == NULL) { - fm_directory_view_new_file_with_initial_contents (directory_view, NULL); + fm_directory_view_new_file_with_initial_contents (directory_view, + parent_uri != NULL ? parent_uri : container_uri, + NULL); + g_free (container_uri); return; } @@ -4257,17 +4266,16 @@ fm_directory_view_new_file (FMDirectoryV data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), pos, - parent_uri, + parent_uri != NULL ? parent_uri : container_uri, NULL, source_uri, new_folder_done, data); - g_free (parent_uri); g_free (source_uri); + g_free (container_uri); } /* handle the open command */ @@ -4782,7 +4790,8 @@ extension_action_callback_data_free (Ext { g_object_unref (data->item); nautilus_file_list_free (data->selection); - + g_object_unref (data->view); + g_free (data); } @@ -4826,6 +4835,12 @@ extension_action_slow_mime_types_ready_c g_free (item_name); if (is_valid) { + char *display; + + display = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (data->view))); + g_setenv ("DISPLAY", display, TRUE); + g_free (display); + nautilus_menu_item_activate (data->item); } @@ -4890,7 +4905,7 @@ add_extension_action_for_files (FMDirect data = g_new0 (ExtensionActionCallbackData, 1); data->item = g_object_ref (item); - data->view = view; + data->view = g_object_ref (view); data->selection = nautilus_file_list_copy (files); data->action = action; @@ -5567,7 +5582,7 @@ create_template_callback (GtkAction *act parameters = callback_data; - fm_directory_view_new_file (parameters->directory_view, parameters->file); + fm_directory_view_new_file (parameters->directory_view, NULL, parameters->file); } static void @@ -9632,6 +9647,7 @@ ask_link_action (FMDirectoryView *view) void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9652,10 +9668,13 @@ fm_directory_view_handle_url_drop (FMDir return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } - if (eel_vfs_has_capability (container_uri, + if (eel_vfs_has_capability (target_uri != NULL ? target_uri : container_uri, EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) { eel_show_warning_dialog (_("Drag and drop is not supported."), _("Drag and drop is only supported on local file systems."), @@ -9736,7 +9755,7 @@ fm_directory_view_handle_url_drop (FMDir screen = gtk_widget_get_screen (GTK_WIDGET (view)); screen_num = gdk_screen_get_number (screen); - nautilus_link_local_create (container_uri, + nautilus_link_local_create (target_uri != NULL ? target_uri : container_uri, link_name, link_display_name, "gnome-fs-bookmark", @@ -9758,7 +9777,7 @@ fm_directory_view_handle_url_drop (FMDir uri_list = g_list_append (uri_list, url); fm_directory_view_move_copy_items (uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); g_list_free (uri_list); @@ -9773,6 +9792,7 @@ fm_directory_view_handle_url_drop (FMDir void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9787,8 +9807,11 @@ fm_directory_view_handle_uri_list_drop ( return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } if (action == GDK_ACTION_ASK) { action = nautilus_drag_drop_action_ask @@ -9847,7 +9870,7 @@ fm_directory_view_handle_uri_list_drop ( } fm_directory_view_move_copy_items (real_uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); eel_g_list_free_deep (real_uri_list); @@ -9861,6 +9884,7 @@ fm_directory_view_handle_uri_list_drop ( void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9873,11 +9897,14 @@ fm_directory_view_handle_text_drop (FMDi g_return_if_fail (action == GDK_ACTION_COPY); - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } fm_directory_view_new_file_with_initial_contents ( - view, text); + view, target_uri != NULL ? target_uri : container_uri, text); g_free (container_uri); } Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.144 diff -u -p -r1.144 fm-directory-view.h --- src/file-manager/fm-directory-view.h 30 Mar 2006 19:37:22 -0000 1.144 +++ src/file-manager/fm-directory-view.h 22 Jun 2006 20:08:34 -0000 @@ -404,21 +404,25 @@ gboolean fm_directory_view_should_so void fm_directory_view_update_menus (FMDirectoryView *view); void fm_directory_view_new_folder (FMDirectoryView *view); void fm_directory_view_new_file (FMDirectoryView *view, + const char *parent_uri, NautilusFile *source); void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view); void fm_directory_view_init_view_iface (NautilusViewIface *iface); void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y); Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.323 diff -u -p -r1.323 fm-icon-view.c --- src/file-manager/fm-icon-view.c 15 May 2006 22:55:25 -0000 1.323 +++ src/file-manager/fm-icon-view.c 22 Jun 2006 20:08:41 -0000 @@ -553,7 +553,8 @@ fm_icon_view_add_file (FMDirectoryView * if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2077,7 +2078,8 @@ fm_icon_view_screen_changed (GtkWidget * } else { if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2527,26 +2529,29 @@ create_icon_container (FMIconView *icon_ /* Handles an URL received from Mozilla */ static void icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void icon_view_handle_uri_list (NautilusIconContainer *container, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void icon_view_handle_text (NautilusIconContainer *container, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static char * Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.270 diff -u -p -r1.270 fm-list-view.c --- src/file-manager/fm-list-view.c 24 May 2006 13:20:42 -0000 1.270 +++ src/file-manager/fm-list-view.c 22 Jun 2006 20:08:47 -0000 @@ -1044,26 +1044,28 @@ get_file_for_path_callback (NautilusTree /* Handles an URL received from Mozilla */ static void list_view_handle_url (NautilusTreeViewDragDest *dest, const char *encoded_url, - GdkDragAction action, int x, int y, FMListView *view) + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void list_view_handle_uri_list (NautilusTreeViewDragDest *dest, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void list_view_handle_text (NautilusTreeViewDragDest *dest, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static void --=-wko5hNaIXKFzt/OLy/jx-- From gcgn-nautilus-list@m.gmane.org Fri Jun 23 20:50:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1A1653B016A for ; Fri, 23 Jun 2006 20:50:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14245-10 for ; Fri, 23 Jun 2006 20:50:09 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id D85B93B00E5 for ; Fri, 23 Jun 2006 20:50:08 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FtwLa-00040A-JD for nautilus-list@gnome.org; Sat, 24 Jun 2006 02:50:02 +0200 Received: from grenadine.bebeloup.net ([82.66.18.21]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 Received: from bdelaage by grenadine.bebeloup.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Boris de Laage Subject: [PATCH] nautilus-vcs: use the C locale for LC_TIME with strftime Date: Sat, 24 Jun 2006 02:46:54 +0200 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: grenadine.bebeloup.net User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.145 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_SORBS_WEB=1.456, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -1.145 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 00:50:10 -0000 strftime formats the string according to the current locale, while CVS timestamps are in english. This patch changes the LC_TIME locale before calling strftime. Boris. Index: nautilus-cvs.c =================================================================== RCS file: /cvs/gnome/nautilus-vcs/src/nautilus-cvs.c,v retrieving revision 1.8 diff -u -r1.8 nautilus-cvs.c --- nautilus-cvs.c 19 Nov 2004 18:18:19 -0000 1.8 +++ nautilus-cvs.c 6 Dec 2005 16:29:12 -0000 @@ -128,8 +128,11 @@ struct tm mtime; const GnomeVFSFileInfo *info; char timestamp[512]; + char *locale; + info = nautilus_file_info_get_vfs_file_info (file); + locale = setlocale(LC_TIME, "C"); gmtime_r (&info->mtime, &mtime); if (strftime (timestamp, 512, "%a %b %e %H:%M:%S %Y", @@ -138,6 +141,7 @@ ret = TRUE; } } + setlocale(LC_TIME, locale); } return ret; From alexgearhart@gmail.com Sat Jun 24 02:03:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C39E83B01BF for ; Sat, 24 Jun 2006 02:03:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26437-02 for ; Sat, 24 Jun 2006 02:03:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by menubar.gnome.org (Postfix) with ESMTP id 7481E3B0303 for ; Sat, 24 Jun 2006 02:03:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so156334uge for ; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.140.17 with SMTP id n17mr1525570hud; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.31.6 with HTTP; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Message-ID: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Date: Sat, 24 Jun 2006 02:03:15 -0400 From: "Alex Gearhart" To: nautilus-list@gnome.org Subject: Folder size column MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_33481_11872762.1151128995549" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.91 tagged_above=-999 required=2 tests=[BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -0.91 X-Spam-Level: X-Mailman-Approved-At: Sat, 24 Jun 2006 10:45:26 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 06:03:19 -0000 ------=_Part_33481_11872762.1151128995549 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hey, the folder size column should display the size of the folder, and not how many files are inside. Then it would be easier to see how much space all your folders take up. Instead, the number of files inside should be in a column like "Contents." Thanks, Alex ------=_Part_33481_11872762.1151128995549 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hey, the folder size column should display the size of the folder, and not how many files are inside.   Then it would be easier to see how much space all your folders take up.  Instead, the number of files inside should be in a column like "Contents."

 

Thanks,
Alex

------=_Part_33481_11872762.1151128995549-- From gcgn-nautilus-list@m.gmane.org Sat Jun 24 13:15:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id EA1233B0385 for ; Sat, 24 Jun 2006 13:15:45 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26732-06 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 6D41A3B0121 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FuBio-0007D2-A1 for nautilus-list@gnome.org; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: support truncated long file name? Date: Sat, 24 Jun 2006 18:08:39 +0100 Lines: 30 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:pg4guGpKutI95x3CB8skWP4y+YE= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:15:46 -0000 Dear all, A missing feature in nautilus is truncated long file name. Imagine opening a dir with a lot of long file names such as a dir containing papers that have title as the file name, which a lot academic workers will do. How messy and inconvenient that is! Lately a colleague, a first-time gnome user, has asked for help to configure his nautilus to show tidily a dir of books that he collected. Unfortunately no one could give an answer. He has then been persuaded to change to KDE. As a gnome user for 4 years, I hate to see people leave gnome this way and thus this post. In case you can't try konqueror or xp explorer, here is the feature: In konqueror or xp explorer, long file name will be truncated with ... to indicate the missing part. A popup will show the full file name when mouse is over the item. (Konqueror has this feature for over 2 years) Files in the desktop are treated differently. Full file name is shown for selected item. This feature is available in xp. Apology for my English. Thanks for your time. -- Leon From mpt@myrealbox.com Sat Jun 24 21:32:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 854743B024B for ; Sat, 24 Jun 2006 21:32:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11780-10 for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from leucothea.redline.site5.com (leucothea.redline.site5.com [216.118.97.161]) by menubar.gnome.org (Postfix) with ESMTP id 7AD453B01DD for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from 203-173-178-53.bliink.ihug.co.nz ([203.173.178.53] helo=[10.1.1.5]) by leucothea.redline.site5.com with esmtpsa (TLSv1:RC4-SHA:128) (Exim 4.52) id 1FuJSn-0001jv-Pt; Sat, 24 Jun 2006 21:31:02 -0400 In-Reply-To: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> References: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <1e87f7c2959ea7bc5dbc264d3a1d94c0@myrealbox.com> Content-Transfer-Encoding: quoted-printable From: Matthew Paul Thomas Subject: Re: Folder size column Date: Sun, 25 Jun 2006 13:31:05 +1200 To: nautilus-list List X-Mailer: Apple Mail (2.623) X-Antivirus-Scanner: This message has been scanned by ClamAV. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leucothea.redline.site5.com X-AntiAbuse: Original Domain - gnome.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - myrealbox.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=0.123, BAYES_00=-2.599] X-Spam-Score: -2.476 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 01:32:02 -0000 On Jun 24, 2006, at 6:03 PM, Alex Gearhart wrote: > > Hey, the folder size column should display the size of the folder, and=20= > not how many files are inside. =A0 Then it would be easier to see how=20= > much space all your folders take up.=A0 Instead, the number of files=20= > inside should be in a column like "Contents." > ... You can subscribe to the relevant bug report to be notified of progress=20= in fixing the bug. Cheers --=20 Matthew Paul Thomas http://mpt.net.nz/= From reinouts@gnome.org Sun Jun 25 04:59:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 45E3C3B02C9 for ; Sun, 25 Jun 2006 04:59:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06259-07 for ; Sun, 25 Jun 2006 04:59:28 -0400 (EDT) Received: from smtp13.wxs.nl (smtp13.wxs.nl [195.121.247.4]) by menubar.gnome.org (Postfix) with ESMTP id E0E423B01C5 for ; Sun, 25 Jun 2006 04:59:27 -0400 (EDT) Received: from reinout.rotterdam-cs.com (ip5656924e.speed.planet.nl [86.86.146.78]) by smtp13.wxs.nl (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with SMTP id <0J1E00KI7RLCUO@smtp13.wxs.nl> for nautilus-list@gnome.org; Sun, 25 Jun 2006 10:58:24 +0200 (CEST) Date: Sun, 25 Jun 2006 11:01:02 +0200 From: Reinout van Schouwen Subject: Re: support truncated long file name? To: nautilus-list@gnome.org Message-id: MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) References: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.449 tagged_above=-999 required=2 tests=[AWL=0.015, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.449 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 08:59:31 -0000 Hi Leon, On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > Lately a colleague, a first-time gnome user, has asked for help to > configure his nautilus to show tidily a dir of books that he collected. How did the long filenames cause "untidiness" then? Was he using list view or icon view? > Unfortunately no one could give an answer. He has then been persuaded to > change to KDE. That sounds like a rigorous solution for a relatively insignificant problem, but at least he is still using Free software :-). > In konqueror or xp explorer, long file name will be truncated with ... > to indicate the missing part. A popup will show the full file name when > mouse is over the item. (Konqueror has this feature for over 2 years) Popup tooltips in the GTK tree/list widget are not possible in the current stable releases, however I think they will be part of the upcoming GTK 2.10. I agree that it would be good to use ellipsis (...) for filenames that do not fit in their column, could you file a bug about this at http://bugzilla.gnome.org/ so that the developers don't forget about it? regards, -- Reinout van Schouwen From gcgn-nautilus-list@m.gmane.org Sun Jun 25 07:19:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8717D3B008F for ; Sun, 25 Jun 2006 07:19:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11101-06 for ; Sun, 25 Jun 2006 07:19:24 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 04FB23B00D9 for ; Sun, 25 Jun 2006 07:19:23 -0400 (EDT) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FuSda-0004qq-Et for nautilus-list@gnome.org; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: Re: support truncated long file name? Date: Sun, 25 Jun 2006 12:18:35 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:M1ThUfhXtUcoA+syhkILCbb1hws= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 11:19:27 -0000 Reinout van Schouwen writes: > Hi Leon, > > On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > >> Lately a colleague, a first-time gnome user, has asked for help to >> configure his nautilus to show tidily a dir of books that he collected. > > How did the long filenames cause "untidiness" then? Was he using list view > or icon view? > Icon view. Sometimes list view is not an option for example on the desktop. > >> In konqueror or xp explorer, long file name will be truncated with ... >> to indicate the missing part. A popup will show the full file name when >> mouse is over the item. (Konqueror has this feature for over 2 years) > > Popup tooltips in the GTK tree/list widget are not possible in the current > stable releases, however I think they will be part of the upcoming GTK > 2.10. I agree that it would be good to use ellipsis (...) for filenames > that do not fit in their column, could you file a bug about this at > http://bugzilla.gnome.org/ so that the developers don't forget about it? Funny story, this bug has been filed slightly more than 4 years ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 Can somebody raise the priority of the bug? As a DE values usability and simplicity this much as gnome, it will be a shame to see this bug hang around for another 4 year. > > regards, > > -- > Reinout van Schouwen -- Leon From ebassi@gmail.com Mon Jun 26 06:28:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11F873B03A8 for ; Mon, 26 Jun 2006 06:28:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09876-02 for ; Mon, 26 Jun 2006 06:28:36 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.170]) by menubar.gnome.org (Postfix) with ESMTP id 6146C3B030F for ; Mon, 26 Jun 2006 06:28:35 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so760879uge for ; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: by 10.67.26.7 with SMTP id d7mr4811743ugj; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: from ?10.0.10.50? ( [147.83.156.10]) by mx.gmail.com with ESMTP id k2sm4822536ugf.2006.06.26.03.28.30; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Subject: Re: support truncated long file name? From: Emmanuele Bassi To: Leon In-Reply-To: References: Content-Type: text/plain Date: Mon, 26 Jun 2006 11:28:29 +0100 Message-Id: <1151317709.6877.2.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.4 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, SPF_PASS=-0.001] X-Spam-Score: -2.4 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 10:28:39 -0000 Hi; On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: > > Popup tooltips in the GTK tree/list widget are not possible in the current > > stable releases, however I think they will be part of the upcoming GTK > > 2.10. Unfortunately, no. They didn't make in time for the 2.10 schedule. > I agree that it would be good to use ellipsis (...) for filenames > > that do not fit in their column, could you file a bug about this at > > http://bugzilla.gnome.org/ so that the developers don't forget about it? > > Funny story, this bug has been filed slightly more than 4 years > ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 > > Can somebody raise the priority of the bug? The GTK developers are pretty well aware of the situation. Unfortunately, providing support for tooltips inside GtkTreeView is a tricky thing to do, and requires a major overhauling of the tooltips API. This means introducing a major change in every application using tooltips, so we need to do things right. > As a DE values usability > and simplicity this much as gnome, it will be a shame to see this bug > hang around for another 4 year. Faster work implies giving a hand with code. If you want, you can contact Kristian, which is working on this issue, and help him by writing some code yourself. Ciao, Emmanuele. -- Emmanuele Bassi, E: ebassi@gmail.com W: http://www.emmanuelebassi.net B: http://log.emmanuelebassi.net From milton.yates@resel.fr Mon Jun 26 11:20:22 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 656393B045D for ; Mon, 26 Jun 2006 11:20:22 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27783-06 for ; Mon, 26 Jun 2006 11:20:20 -0400 (EDT) Received: from smtp2-g19.free.fr (smtp2-g19.free.fr [212.27.42.28]) by menubar.gnome.org (Postfix) with ESMTP id E856A3B0135 for ; Mon, 26 Jun 2006 11:20:19 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp2-g19.free.fr (Postfix) with ESMTP id B299273276 for ; Mon, 26 Jun 2006 17:20:18 +0200 (CEST) Subject: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org Content-Type: text/plain Date: Mon, 26 Jun 2006 17:20:18 +0200 Message-Id: <1151335218.3123.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 15:20:22 -0000 Hi, I'm often coming across the following dialog box: "Cannot XXX. The filename "XXX" indicates that this file is of type "YYY". The contents of the file indicate that the file is of type "ZZZ". If you open this file, the file might present a security risk to your system." Often on WMV files, it says it's ASF, but it's not. Knowing that file content detection might fail, I'd like to know if there is any way to prevent Nautilus from actually doing this detection. The user should be able to deactivate it, as I can get quite annoying. Is that possible ? Thanks, Milton. From nshmyrev@yandex.ru Tue Jun 27 04:14:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 250FE3B0204 for ; Tue, 27 Jun 2006 04:14:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15482-05 for ; Tue, 27 Jun 2006 04:14:13 -0400 (EDT) Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18]) by menubar.gnome.org (Postfix) with ESMTP id 106663B02D1 for ; Tue, 27 Jun 2006 04:14:12 -0400 (EDT) Received: from ppp83-237-255-208.pppoe.mtu-net.ru ([83.237.255.208]:38893 "EHLO gnome.local" smtp-auth: "nshmyrev" TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3376165AbWF0IOK (ORCPT ); Tue, 27 Jun 2006 12:14:10 +0400 X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: nshmyrev Subject: Re: Nautilus and file format detection... From: "Nickolay V. Shmyrev" To: Milton YATES In-Reply-To: <1151335218.3123.16.camel@localhost> References: <1151335218.3123.16.camel@localhost> Content-Type: text/plain; charset=utf-8 Date: Tue, 27 Jun 2006 12:14:13 +0400 Message-Id: <1151396053.11042.5.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.315 tagged_above=-999 required=2 tests=[AWL=0.150, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_PASS=-0.001] X-Spam-Score: -2.315 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 08:14:28 -0000 Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > Hi, > > I'm often coming across the following dialog box: > "Cannot XXX. > The filename "XXX" indicates that this file is of > type "YYY". The contents of the file indicate > that the file is of type "ZZZ". If you open this file, > the file might present a security risk to your system." > > Often on WMV files, it says it's ASF, but it's not. > > Knowing that file content detection might fail, I'd like to know > if there is any way to prevent Nautilus from actually doing this detection. > The user should be able to deactivate it, as I can get quite annoying. > Is that possible ? > As far as I know there is no way to disable dialog detection, but the problem with this known "dialog of doom" was solved long time ago. Probably, upgrade will help you with your problems. From milton.yates@resel.fr Tue Jun 27 13:47:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8740F3B01EE for ; Tue, 27 Jun 2006 13:47:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 10834-05 for ; Tue, 27 Jun 2006 13:47:01 -0400 (EDT) Received: from smtp6-g19.free.fr (smtp6-g19.free.fr [212.27.42.36]) by menubar.gnome.org (Postfix) with ESMTP id E0B2B3B0163 for ; Tue, 27 Jun 2006 13:47:00 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp6-g19.free.fr (Postfix) with ESMTP id E8A1418719 for ; Tue, 27 Jun 2006 19:46:27 +0200 (CEST) Subject: Re: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org In-Reply-To: <1151396053.11042.5.camel@gnome.local> References: <1151335218.3123.16.camel@localhost> <1151396053.11042.5.camel@gnome.local> Content-Type: text/plain; charset=UTF-8 Date: Tue, 27 Jun 2006 19:46:21 +0200 Message-Id: <1151430381.16816.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 17:47:02 -0000 Le mardi 27 juin 2006 à 12:14 +0400, Nickolay V. Shmyrev a écrit : > Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > > I'm often coming across the following dialog box: > > "Cannot XXX. > > The filename "XXX" indicates that this file is of > > type "YYY". The contents of the file indicate > > that the file is of type "ZZZ". If you open this file, > > the file might present a security risk to your system." > > > > Often on WMV files, it says it's ASF, but it's not. > As far as I know there is no way to disable dialog detection, but the > problem with this known "dialog of doom" was solved long time ago. > Probably, upgrade will help you with your problems. I use nautilus 2.12.2 in a gnome 2.12.3. This almost only happens on WMV files which are detected as ASF. From kristoffer.lunden@gmail.com Tue Jun 27 15:16:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2F2113B02A8 for ; Tue, 27 Jun 2006 15:16:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14131-01 for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: from nz-out-0102.google.com (nz-out-0102.google.com [64.233.162.204]) by menubar.gnome.org (Postfix) with ESMTP id 8C3C63B03AC for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: by nz-out-0102.google.com with SMTP id i1so2361752nzh for ; Tue, 27 Jun 2006 12:16:03 -0700 (PDT) Received: by 10.36.178.19 with SMTP id a19mr1156199nzf; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Received: by 10.36.132.19 with HTTP; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Message-ID: Date: Tue, 27 Jun 2006 21:16:02 +0200 From: "=?UTF-8?Q?Kristoffer_Lund=C3=A9n?=" To: "nautilus-list@gnome.org" Subject: Possible to recognize a dropped ISO into the creator? MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_9323_19651519.1151435762818" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.45 tagged_above=-999 required=2 tests=[AWL=-0.626, BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, HTML_10_20=1.351, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.45 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 19:16:34 -0000 ------=_Part_9323_19651519.1151435762818 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sCgpqdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQgaXQgYWdh aW4uIDopCgpJIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlrZSB0byBidXJuLiBJ IGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwCnBvcHMgYSBxdWVzdGlvbiBpZiBJIHdhbnQgdG8g aWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3IKYnVybmluZyBhbiBJ U08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJlIHByZXNlbnQgdG9v LCBvcgp3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29nbml6ZSB0aGF0IGFu IElTTyBpcyBiZWluZyBkcm9wcGVkCmFuZCBhc2sgaWYgSSB3YW50IHRvIG1ha2UgYW4gSVNPIG9y IGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KCkFwcGFyZW50bHkgTmF1dGlsdXMga25v d3MgaXQncyBhbiBJU086IGFzIGl0IGlzIG5vdywgSSBoYXZlIHRvIGdvIHRvIHRoZQpJU08sIHJp Z2h0LWNsaWNrIGFuZCBjaG9vc2UgdG8gYnVybiBpdCBmcm9tIHRoZXJlLiBJJ2QgcmF0aGVyIGhh dmUgaXQgbW9yZQp1bmlmaWVkLCBhcyB0aGUgcXVlc3Rpb24gaXMgYXNrZWQgYW55d2F5cyB3aGVu IEkgcHV0IHRoZSBDRCBpbi4KCi0tIEtyaXN0b2ZmZXIKCi0tIApLcmlzdG9mZmVyIEx1bmTDqW4K 4pyJIGtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbQrinIkga3Jpc3RvZmZlci5sdW5kZW5AZ2Ft ZW1ha2VyLm51Cmh0dHA6Ly93d3cuZ2FtZW1ha2VyLm51LwrimI4gMDcwNCA0OCA5OCA3Nwo= ------=_Part_9323_19651519.1151435762818 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sPGJyPjxicj5qdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQg aXQgYWdhaW4uIDopPGJyPjxicj5JIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlr ZSB0byBidXJuLiBJIGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwIHBvcHMgYSBxdWVzdGlvbiBp ZiBJIHdhbnQgdG8gaWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3Ig YnVybmluZyBhbiBJU08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJl IHByZXNlbnQgdG9vLCBvciB3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29n bml6ZSB0aGF0IGFuIElTTyBpcyBiZWluZyBkcm9wcGVkIGFuZCBhc2sgaWYgSSB3YW50IHRvIG1h a2UgYW4gSVNPIG9yIGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KPGJyPjxicj5BcHBh cmVudGx5IE5hdXRpbHVzIGtub3dzIGl0J3MgYW4gSVNPOiBhcyBpdCBpcyBub3csIEkgaGF2ZSB0 byBnbyB0byB0aGUgSVNPLCByaWdodC1jbGljayBhbmQgY2hvb3NlIHRvIGJ1cm4gaXQgZnJvbSB0 aGVyZS4gSSdkIHJhdGhlciBoYXZlIGl0IG1vcmUgdW5pZmllZCwgYXMgdGhlIHF1ZXN0aW9uIGlz IGFza2VkIGFueXdheXMgd2hlbiBJIHB1dCB0aGUgQ0QgaW4uPGJyPgo8YnI+LS0gS3Jpc3RvZmZl cjxicj48YnI+LS0gPGJyPktyaXN0b2ZmZXIgTHVuZMOpbjxicj7inIkgPGEgaHJlZj0ibWFpbHRv OmtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbSI+a3Jpc3RvZmZlci5sdW5kZW5AZ21haWwuY29t PC9hPjxicj7inIkgPGEgaHJlZj0ibWFpbHRvOmtyaXN0b2ZmZXIubHVuZGVuQGdhbWVtYWtlci5u dSI+a3Jpc3RvZmZlci5sdW5kZW5AZ2FtZW1ha2VyLm51PC9hPjxicj4KPGEgaHJlZj0iaHR0cDov L3d3dy5nYW1lbWFrZXIubnUvIj5odHRwOi8vd3d3LmdhbWVtYWtlci5udS88L2E+PGJyPuKYjiAw NzA0IDQ4IDk4IDc3PGJyPgo= ------=_Part_9323_19651519.1151435762818-- From sl392@hermes.cam.ac.uk Mon Jun 26 09:23:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 30A753B017B for ; Mon, 26 Jun 2006 09:23:46 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20605-04 for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) Received: from ppsw-9.csi.cam.ac.uk (ppsw-9.csi.cam.ac.uk [131.111.8.139]) by menubar.gnome.org (Postfix) with ESMTP id 231A23B035F for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) X-Cam-SpamDetails: Not scanned X-Cam-AntiVirus: No virus found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]:51862) by ppsw-9.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:587) with esmtpsa (LOGIN:sl392) (TLSv1:DHE-RSA-AES256-SHA:256) id 1Fur3z-0007uC-Uw (Exim 4.54) (return-path ); Mon, 26 Jun 2006 14:23:39 +0100 To: Emmanuele Bassi Subject: Re: support truncated long file name? References: <1151317709.6877.2.camel@localhost> From: Leon Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= Date: Mon, 26 Jun 2006 14:23:38 +0100 In-Reply-To: <1151317709.6877.2.camel@localhost> (Emmanuele Bassi's message of "Mon, 26 Jun 2006 11:28:29 +0100") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Shidai (Leon) Liu X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.593 tagged_above=-999 required=2 tests=[AWL=0.006, BAYES_00=-2.599] X-Spam-Score: -2.593 X-Spam-Level: X-Mailman-Approved-At: Thu, 29 Jun 2006 03:03:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 13:23:46 -0000 Emmanuele Bassi writes: > Hi; > > On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: >> > Popup tooltips in the GTK tree/list widget are not possible in the current >> > stable releases, however I think they will be part of the upcoming GTK >> > 2.10. > > Unfortunately, no. They didn't make in time for the 2.10 schedule. > Can we implement this without using tooltip? For example, we can have the full file name displayed when the file is selected and truncated otherwise. Most of the time, user can recognize the file by the mimetype icon and the beginning few words of the file. >> I agree that it would be good to use ellipsis (...) for filenames >> > that do not fit in their column, could you file a bug about this at >> > http://bugzilla.gnome.org/ so that the developers don't forget about it? >> >> Funny story, this bug has been filed slightly more than 4 years >> ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 >> >> Can somebody raise the priority of the bug? > > The GTK developers are pretty well aware of the situation. > Unfortunately, providing support for tooltips inside GtkTreeView is a > tricky thing to do, and requires a major overhauling of the tooltips > API. This means introducing a major change in every application using > tooltips, so we need to do things right. Now I see it is fundamentally difficult to implement the tooptip methods:) > >> As a DE values usability >> and simplicity this much as gnome, it will be a shame to see this bug >> hang around for another 4 year. > > Faster work implies giving a hand with code. If you want, you can > contact Kristian, which is working on this issue, and help him by > writing some code yourself. > > Ciao, > Emmanuele. Thanks Emmanuele. Unfortunately, I'm not trained in programming. Implementing this without tooltip seems feasible. -- Leon From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request. See you. -- Manuel Clos, llanero@jazzfree.com use what's best for you. Don't use what you feel you "have" to. From james@pharaohsystems.com Fri Jun 2 05:47:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2368D3B02C0 for ; Fri, 2 Jun 2006 05:47:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15548-06 for ; Fri, 2 Jun 2006 05:47:36 -0400 (EDT) Received: from lan.apnuk.com (lan.apnuk.com [212.50.185.139]) by menubar.gnome.org (Postfix) with SMTP id 5004E3B10A9 for ; Fri, 2 Jun 2006 05:47:35 -0400 (EDT) Received: (qmail 26337 invoked from network); 2 Jun 2006 09:47:32 -0000 Received: from unknown (HELO apollo.leeds.apnuk.com) (10.5.30.2) by vulpine.leeds.apnuk.com with SMTP; 2 Jun 2006 09:47:32 -0000 From: James Pharaoh To: nautilus-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-07kukkHUo3K+dfnSUGad" Date: Fri, 02 Jun 2006 10:49:00 +0100 Message-Id: <1149241741.11467.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 02 Jun 2006 13:45:59 -0400 Subject: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 09:47:38 -0000 --=-07kukkHUo3K+dfnSUGad Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I like being able to give folders icons in Nautilus but the "metadata" method is not much use because it is difficult to copy with the folder if I don't use Nautilus to copy it. I'd like to be able to stick a file, say ".nautilus-folder-icon" in the directory to set a default icon, obviously this would be overridden by any metadata icon set. In fact, the name of the file could be set in gconf and this could turn the option on. I assume this wouldn't be too hard to do, I'd like to have a go myself but would appreciate a few hints from someone who knows where to look in the code. Thanks, James --=-07kukkHUo3K+dfnSUGad Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEgAmMOov9Pl/is1ERAjYHAKCHw/iPWN55VZBzbRSsif0Q5YQOeQCfRp1k ttjF+6rSt545Z6oKNuRada0= =ftMn -----END PGP SIGNATURE----- --=-07kukkHUo3K+dfnSUGad-- From patrick.jacquotf@free.fr Fri Jun 2 13:59:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AB21E3B0170 for ; Fri, 2 Jun 2006 13:59:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12964-10 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 759E43B0176 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 5E8A647E61; Fri, 2 Jun 2006 19:59:08 +0200 (CEST) From: Patrick Jacquot To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jun 2006 19:58:55 +0200 Message-Id: <1149271136.8687.44.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.011, BAYES_00=-2.599] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 17:59:13 -0000 Le vendredi 02 juin 2006 à 10:49 +0100, James Pharaoh a écrit : > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. > > Thanks, > > James Maybe adding emblems to the folder icons could achieve what you want. Those emblems superimpose themselves over the folder icon, you can have a folder with a yellow star superimposed, another one with a rocket superimposed and so on. I devised a small utility to be able to add such emblems to a directory icon (or a file icon) from the command line (or from a script) See the chemb project on sourceforge -- Patrick From sacha@forty2.be Fri Jun 2 15:05:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 50A4B3B0E50 for ; Fri, 2 Jun 2006 15:05:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17528-06 for ; Fri, 2 Jun 2006 15:05:55 -0400 (EDT) Received: from adicia.telenet-ops.be (adicia.telenet-ops.be [195.130.132.56]) by menubar.gnome.org (Postfix) with ESMTP id 955E03B0A09 for ; Fri, 2 Jun 2006 15:05:47 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by adicia.telenet-ops.be (Postfix) with SMTP id 3A604705D0 for ; Fri, 2 Jun 2006 21:05:46 +0200 (CEST) Received: from romulus.local (dD5E02B5C.access.telenet.be [213.224.43.92]) by adicia.telenet-ops.be (Postfix) with ESMTP id F3AA0705F6 for ; Fri, 2 Jun 2006 21:05:45 +0200 (CEST) From: Sacha Vandenbroeck To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 02 Jun 2006 21:05:50 +0100 Message-Id: <1149278750.14015.9.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Dropline GNOME Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.395 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.395 X-Spam-Level: X-Mailman-Approved-At: Sat, 03 Jun 2006 08:07:21 -0400 Subject: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 19:05:56 -0000 I posted a Nautilus bug, but now ofcourse the developers need a backtrace of this crash. But how do I do this? I have to compile nautilus myself so I tried to do this with the "--enable-debug" option and then tried to get a backtrace with gdb (following the instructions at this link https://wiki.ubuntu.com/Backtrace ) but I still can't get a full backtrace. I don't get the "no debugging symbols found" messages, but still the backtrace is as useless as before. So how do I build nautilus to debug it? I'm sorry if this sounds silly, but I never tried this before and there is almost no information in human language on this topic (I'm not a developer myself but still I want to help make Gnome better). From seb128@debian.org Sat Jun 3 08:52:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDCC33B05AB for ; Sat, 3 Jun 2006 08:52:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03672-09 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from smtp7.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.24]) by menubar.gnome.org (Postfix) with ESMTP id 8BBB13B05D6 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from [192.168.0.2] (ANancy-151-1-75-89.w81-50.abo.wanadoo.fr [81.50.153.89]) by mwinf0706.orange.fr (SMTP Server) with ESMTP id 068A41C0008D for ; Sat, 3 Jun 2006 14:52:36 +0200 (CEST) X-ME-UUID: 20060603125237268.068A41C0008D@mwinf0706.orange.fr From: Sebastien Bacher To: nautilus-list@gnome.org In-Reply-To: <1149278750.14015.9.camel@localhost> References: <1149278750.14015.9.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15 Date: Sat, 03 Jun 2006 14:52:31 +0200 Message-Id: <1149339151.5915.0.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.526 tagged_above=-999 required=2 tests=[AWL=0.073, BAYES_00=-2.599] X-Spam-Score: -2.526 X-Spam-Level: Subject: Re: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 12:52:41 -0000 Le vendredi 02 juin 2006 à 21:05 +0100, Sacha Vandenbroeck a écrit : > I posted a Nautilus bug, but now ofcourse the developers need a > backtrace of this crash. But how do I do this? I have to compile > nautilus myself Hi, No need to build a debug package, just "apt-get install nautilus-dbg" Cheers, Sebastien Bacher From mark.kegel@gmail.com Sat Jun 3 12:08:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 7138E3B0702 for ; Sat, 3 Jun 2006 12:08:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14511-09 for ; Sat, 3 Jun 2006 12:08:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by menubar.gnome.org (Postfix) with ESMTP id 144503B05AE for ; Sat, 3 Jun 2006 12:08:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so815420uge for ; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=W3JRAemVm7OT3HZt2c9RWshzsIBh1m2jBCk+XhCdQhCGtf2oEFpImrEbBnTXY1DChmA46aVlKGGeltQrmOjjppin/uUnWUn1wFkAfVdppvvGeJ1suY0q6OhYugz4aF93JKNrMlbKo2m1+WD50q1Q+pc2WLm4FHQNnkoCAPnIwGs= Received: by 10.67.97.7 with SMTP id z7mr1786225ugl; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) Received: by 10.66.254.18 with HTTP; Sat, 3 Jun 2006 09:08:16 -0700 (PDT) Message-ID: <8a5993840606030908n9df00b8k8cdfb555b95c3dbe@mail.gmail.com> Date: Sat, 3 Jun 2006 10:08:16 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.042 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_BL_SPAMCOP_NET=1.558, SPF_PASS=-0.001] X-Spam-Score: -1.042 X-Spam-Level: X-Mailman-Approved-At: Sun, 04 Jun 2006 08:36:32 -0400 Subject: volumes not showing in nautilus X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 16:08:18 -0000 I've been running gnome 2.14 for about two weeks now and am very pleased with it. Unfortunately, nautilus isn't showing the partitions I have mounted, as it did in 2.12. I've set the appropriate settings with gconf (at least I think I have) with no luck. Anyone have any ideas or pointers to a solution? Mark Kegel From xclaesse@gmail.com Mon Jun 5 05:57:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 994D93B031D; Mon, 5 Jun 2006 05:57:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20358-05; Mon, 5 Jun 2006 05:56:59 -0400 (EDT) Received: from outmx026.isp.belgacom.be (outmx026.isp.belgacom.be [195.238.4.91]) by menubar.gnome.org (Postfix) with ESMTP id 5AEF03B00CE; Mon, 5 Jun 2006 05:56:58 -0400 (EDT) Received: from outmx026.isp.belgacom.be (localhost [127.0.0.1]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559upxm015348; Mon, 5 Jun 2006 11:56:51 +0200 (envelope-from ) Received: from [10.0.0.3] (244-16.241.81.adsl.skynet.be [81.241.16.244]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559ulet015294; Mon, 5 Jun 2006 11:56:48 +0200 (envelope-from ) From: Xavier Claessens To: Christian Neumair In-Reply-To: <1147197585.5045.11.camel@localhost> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-nAeSl/tN81bv5MmP9h9B" Date: Mon, 05 Jun 2006 11:56:49 +0200 Message-Id: <1149501410.7231.27.camel@zdra-desktop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.999 tagged_above=-999 required=2 tests=[AWL=-0.469, BAYES_00=-2.599, SPF_NEUTRAL=1.069] X-Spam-Score: -1.999 X-Spam-Level: Cc: Mark McLoughlin , Vincent Untz , "nautilus-list@gnome.org" Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 09:57:01 -0000 --=-nAeSl/tN81bv5MmP9h9B Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Le mardi 09 mai 2006 =C3=A0 19:59 +0200, Xavier Claessens a =C3=A9crit : > Le mardi 09 mai 2006 =C3=A0 18:59 +0200, Christian Neumair a =C3=A9crit : > > Am Dienstag, den 09.05.2006, 10:25 +0200 schrieb Xavier Claessens: > > > Le mardi 09 mai 2006 =C3=A0 10:01 +0200, Christian Neumair a =C3=A9cr= it : > > > > > For volume icons from the desktop, is it possible to make it work= like > > > > > in computer:/// ? nautilus should generate on-the-fly same .drive= files. > > > > > Like that we are sure that at least icons from desktop and from > > > > > computer:/// react the same way. > > > >=20 > > > > Passing around on-the-fly generated files (which would have to be p= ut > > > > into file:///tmp) isn't a good idea IMHO, because it requires sniff= ing > > > > foreach passed-in URI. My proposal tried to address the fact that s= ome > > > > applications are interested in volumes or drives but not in their > > > > corresponding files, since the actual volume/drive data can be quer= ied > > > > from the volume monitor. > > >=20 > > > Ok. So computer:/// should works like x-nautilus-desktop:/// and > > > nautilus should never use the on-the-fly generated .drive files. Like > > > that most problems are solved because icons from desktop aren't accep= ted > > > for dropping anywhere. > >=20 > > No, it doesn't solve the problem, because - as you pointed out - not > > doing anything isn't really user-friendly either. IMHO it would be the > > best to operate on the drive's activation URI when dropping a volume or > > drive file to another folder. >=20 > As I understand we have currently 2 representations possible for a > drive/volume icon in nautilus. One for computer:/// and another for > x-nautilus-desktop:///. So I think the first step is to have only one > representation. We should only use the first or the second or maybe > another system which will replace the two. >=20 > So my question is: we should use computer:/// representation for > x-nautilus-desktop:/// ? Or the reverse ? or something else ? >=20 > When we have one single representation we should patch other > applications (including gnome-panel and nautilus itself) to accept in > one way or another DnD of this representation. >=20 > Xavier Claessens. >=20 So what can we do now for GNOME 2.15 ? I think nautilus should really have a common way handling drives/volumes files. Here is an example of *really* bad design: zdra@zdra-desktop:~/programmation/gnome/nautilus$ grep -r "eject_for_type (GnomeVFSDeviceType type)" * libnautilus-private/nautilus-desktop-link-monitor.c:eject_for_type (GnomeVFSDeviceType type) src/nautilus-places-sidebar.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-directory-view.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-tree-view.c:eject_for_type (GnomeVFSDeviceType type) Yes this basic function is defined 4 times in different files ! There is also functions like the one which says if an GnomeVFSDrive should have a "eject", "unmount", "format",etc popup menu option which is copy/pasted everywhere in nautilus. So what I propose is adding some objects to libnautilus-private to have a common way handling Drive and Volume files. In the same way of nautilus_destkop_* we can make something like nautilus_volume_file and nautilus_drive_file which would be used to computer:///, x-nautilus-desktop:///,etc. On this objects we can have methods like gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); to replace the eject_for_type(). And void nautilus_volume_file_get_options (NautilusDriveFile*, gboolean *show_mount, gboolean *show_unmount, gboolean *show_eject, gboolean *show_format); To know which options we can show for this file. I don't know exactly how all that can work and if that's a good idea but I can work on it this summer. I'll experiment some patches as soon as my exams finishes. I would be happy to have comments on this. Xavier Claessens. --=-nAeSl/tN81bv5MmP9h9B Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEg//h6dEBUn2qPAMRAtmXAKCB3U3DFjVEGjbAazBKl7zNZwTUFQCgjxxd +HMH0MmP9vv41UqLjYgldaE= =BuCn -----END PGP SIGNATURE----- --=-nAeSl/tN81bv5MmP9h9B-- From jamesat@comcast.net Wed Jun 7 07:38:09 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 70A7B3B0C14 for ; Wed, 7 Jun 2006 07:38:09 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07291-05 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [63.240.77.85]) by menubar.gnome.org (Postfix) with ESMTP id 61B153B0C89 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from [10.10.10.51] (c-66-31-77-146.hsd1.nh.comcast.net[66.31.77.146]) by comcast.net (sccrmhc15) with SMTP id <2006060711380501500ch6mte>; Wed, 7 Jun 2006 11:38:05 +0000 From: James Tremblay To: nautilus-list@gnome.org Content-Type: text/plain Date: Wed, 07 Jun 2006 07:37:40 -0400 Message-Id: <1149680260.8506.2.camel@sled10.liberty> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: Yes, score=2.415 tagged_above=-999 required=2 tests=[BAYES_20=-0.74, DNS_FROM_RFC_POST=1.708, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: 2.415 X-Spam-Level: ** X-Spam-Flag: YES Subject: connectivity issues X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 11:38:09 -0000 is there any plan to integrate standards based slp services to Nautilus. this is a ridiculous question to ask of a modern network browser but i'm asking cuz it's needed! From sivan@ubuntu.com Wed Jun 7 14:39:47 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 663863B0546 for ; Wed, 7 Jun 2006 14:39:47 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05495-10 for ; Wed, 7 Jun 2006 14:39:44 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id BF82C3B069F for ; Wed, 7 Jun 2006 14:39:43 -0400 (EDT) Received: from bzq-84-108-224-57.cablep.bezeqint.net (bzq-84-108-224-57.cablep.bezeqint.net [84.108.224.57]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BC32D44DD for ; Wed, 7 Jun 2006 20:39:36 +0200 (CEST) From: Sivan Greenberg To: nautilus-list@gnome.org In-Reply-To: <1149074455.5848.7.camel@localhost> References: <1149074455.5848.7.camel@localhost> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 07 Jun 2006 21:39:32 +0300 Message-Id: <1149705572.8926.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.369 tagged_above=-999 required=2 tests=[AWL=0.095, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.369 X-Spam-Level: Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 18:39:47 -0000 Hi Again, the wonderful users and hacker of nautilus. I would like to bring your attention again to a patch I have created originally using pure gnome_vfs functions to check if the source's parent is read only, and if so default to a copy operation instead of a move operation which previously caused hassle, confusing and much mess among especially converts from other operating system, as to why "Such a trivial operation needs to involve hassle and why do I even need to think about it and select copy from the context menu??" etc.. ;-) So after realizing this patch is not good enough, due to it being inside a callback which gets called multiple times per each DND operation, Manny on the irc channel proposed I use instead of the native gnome-vfs methods, the nautilus infras. for file manipulation (to check if the source uri's parent is read only) , namely libnautilus-private/nautilus-file.h::nautilus_file_get_existing and libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info Now my question is, should I get a new patch in the same a approach of the previous one (which actually followed another patch approach, from the file ownership bug) but with the this time cache enabled functions of nautilus-file.h, will this be accepted by the upstream maintainers? I would hate to start work on it, just to realize I need to re-do it again. Many thanks, and apologies for the spam :) Sivan On Wed, 2006-05-31 at 14:20 +0300, Sivan Green wrote: > Hi List! > > As I have been experiencing this bug for quite some time long, and been > bitched my converts that this is such a minimal thing for an "OS" to > know to do, I have decided to write a patch for it myself. > > My patch basically adds another check before deciding on a "move" > operation, in a similar way to what [1] is already doing, and as such, > [1] must be applied before [2] can be applied to achieve the fix. > > This is already scheduled for dapper-updates, but I would love to see it > fixed upstream as well, for benefit of other distros who have reported > this issue. (has also bee spotted in Fedora) > > Many Thanks! > > Cheers, > > Sivan > > [1]: http://bugzilla.gnome.org/attachment.cgi?id=63939&action=view > [2]: http://bugzilla.gnome.org/attachment.cgi?id=66519 From promac@gmail.com Thu Jun 8 22:12:37 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 00AED3B0108 for ; Thu, 8 Jun 2006 22:12:37 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20139-03 for ; Thu, 8 Jun 2006 22:12:36 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.200]) by menubar.gnome.org (Postfix) with ESMTP id 3902E3B0118 for ; Thu, 8 Jun 2006 22:12:35 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so556444wxd for ; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k8WPqufouETdhytWFOCSGqDBX6Uww6u/gx9GEiZfqGDansyu/0GfgVJyWff6v5Bes6Maf8ZS2LgMrkJjT8mpXVazDoz6ic2fs6ad7faacc72ctSOSMCMi0jOeU6u9dS8t246PH01NSDAEkqr+nztxZGQI1j/y8aqMs+P7Y/+/5Y= Received: by 10.70.36.1 with SMTP id j1mr2903510wxj; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Thu, 8 Jun 2006 19:12:34 -0700 (PDT) Message-ID: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Date: Thu, 8 Jun 2006 23:12:34 -0300 From: "Paulo Cavalcanti" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19117_24627930.1149819154508" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.588 tagged_above=-999 required=2 tests=[AWL=-0.340, BAYES_00=-2.599, HTML_10_20=1.351, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -1.588 X-Spam-Level: Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 02:12:37 -0000 ------=_Part_19117_24627930.1149819154508 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. ------=_Part_19117_24627930.1149819154508 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi,

I am having a problem with nautilus 2.10 from fedora 4.
Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When
I try to close the gnome session it hangs and I have to kill  X.

Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed.

Any suggestion would be greatly appriciated.

Thanks,

/Paulo Roma. ------=_Part_19117_24627930.1149819154508-- From nshmyrev@yandex.ru Fri Jun 9 01:48:25 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 740903B009A for ; Fri, 9 Jun 2006 01:48:25 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30793-01 for ; Fri, 9 Jun 2006 01:48:24 -0400 (EDT) Received: from tzec.mtu.ru (tzec.mtu.ru [195.34.34.228]) by menubar.gnome.org (Postfix) with ESMTP id DF3BF3B0014 for ; Fri, 9 Jun 2006 01:48:21 -0400 (EDT) Received: from gnome.local (ppp83-237-205-132.pppoe.mtu-net.ru [83.237.205.132]) by smtp.MTU.RU (Postfix) with ESMTP id 453E4488309; Fri, 9 Jun 2006 09:48:19 +0400 (MSD) (envelope-from nshmyrev@yandex.ru) From: "Nickolay V. Shmyrev" To: Paulo Cavalcanti In-Reply-To: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Date: Fri, 09 Jun 2006 09:48:27 +0400 Message-Id: <1149832107.2245.28.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.797 tagged_above=-999 required=2 tests=[AWL=-0.402, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.797 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 05:48:25 -0000 Ð’ Чтв, 08/06/2006 в 23:12 -0300, Paulo Cavalcanti пишет: > Hi, > > I am having a problem with nautilus 2.10 from fedora 4. > Since yesterday, it does not put any icon on the desktop, although it > is running. It is also using more than 95% of the CPU. When > I try to close the gnome session it hangs and I have to kill X. > > Everything else seems to be normal. I can login in kde with no problem > at all. I rebooted the computer many times and nothing has changed. > > Any suggestion would be greatly appriciated. > Without additional information it's hard to say what is going on. First of all, check xsession-error in /tmp if something is dumped to error log. Then try to run nautilus or gnome-session under strace and find the place where it hangs. You can try to debug it: with gdb you should login from console, attach to the nautilus with gdb --pid= and collect backtrace with "thread apply all bt" command. You need to install debug packages installed. From promac@gmail.com Fri Jun 9 05:58:16 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F0973B01CA for ; Fri, 9 Jun 2006 05:58:16 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13186-06 for ; Fri, 9 Jun 2006 05:58:15 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.192]) by menubar.gnome.org (Postfix) with ESMTP id B48E83B0770 for ; Fri, 9 Jun 2006 05:58:14 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so608500wxd for ; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mSed73zFvOJhdPHW9Yif+JRsWWePYb71KV3h3JbLoqieOWg+6Yppc95cWmUhw/d6gYdkEbxdgjXfPvh2Whim2HdNbRldY66mxmxKSYjrhQxGDzH6CThqyjhX0xhsPIHyr0JHiMJ7sCuR3o9gOYX55imhIyCq5ToVEXUKVKMdroE= Received: by 10.70.100.17 with SMTP id x17mr3293949wxb; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Fri, 9 Jun 2006 02:58:13 -0700 (PDT) Message-ID: <68720af30606090258r5658e239ga508c46495cf877b@mail.gmail.com> Date: Fri, 9 Jun 2006 06:58:14 -0300 From: "Paulo Cavalcanti" To: "Nickolay V. Shmyrev" In-Reply-To: <1149832107.2245.28.camel@gnome.local> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22870_26670651.1149847094006" References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> <1149832107.2245.28.camel@gnome.local> X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.842 tagged_above=-999 required=2 tests=[AWL=0.533, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.842 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 09:58:16 -0000 ------=_Part_22870_26670651.1149847094006 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5CgpJIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dpbmcgYW5k IGZvdW5kIHRoZSBwcm9ibGVtLgpJIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQgd2FzIGNhdXNl ZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZQpJJ3ZlIG1hZGUgaW4gZ3N0cmVhbWVyLTAuMTAu Cgpnc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1w bHVnaW5zLWJhc2UtMC4xMC43LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1kZXZl bC0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG0KZ3N0cmVhbWVyLXRvb2xzLTAuMTAuNi4yLTAu Z3N0LjEuNC5pMzg2LnJwbQpnc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLWRldmVsLTAuMTAuNy4y LTAuZ3N0LjEuNC5pMzg2LnJwbQoKSSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVs ZWFzZSBhbmQgbmF1dGlsdXMgaXMgc3RhcnRpbmcgYWdhaW4uCldoeSB3b3VsZCBuYXV0aWx1cyBk ZXBlbmQgb24gdGhpcyBjcmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3IKcmh5dGhtYm94LTAu OS4gImxkZCAvdXNyL2Jpbi9uYXV0aWx1cyIgZG9lcyBub3Qgc2hvdyBhbnkgZGVwZW5kZW5jeS4K CldoYXQgcGFydCBvZiBnbm9tZSBkb2VzIHVzZSBpdD8KClRoYW5rIHlvdSwgdmVyeSBtdWNoLgoK L1BhdWxvIFJvbWEuCgpPbiA2LzkvMDYsIE5pY2tvbGF5IFYuIFNobXlyZXYgPG5zaG15cmV2QHlh bmRleC5ydT4gd3JvdGU6Cj4KPiD3IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVs byBDYXZhbGNhbnRpINDJ28XUOgo+ID4gSGksCj4gPgo+ID4gSSBhbSBoYXZpbmcgYSBwcm9ibGVt IHdpdGggbmF1dGlsdXMgMi4xMCBmcm9tIGZlZG9yYSA0Lgo+ID4gU2luY2UgeWVzdGVyZGF5LCBp dCBkb2VzIG5vdCBwdXQgYW55IGljb24gb24gdGhlIGRlc2t0b3AsIGFsdGhvdWdoIGl0Cj4gPiBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo+ID4gSSB0cnkgdG8gY2xvc2UgdGhlIGdub21lIHNlc3Npb24gaXQgaGFuZ3MgYW5kIEkgaGF2 ZSB0byBraWxsICBYLgo+ID4KPiA+IEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBiZSBub3JtYWwu IEkgY2FuIGxvZ2luIGluIGtkZSB3aXRoIG5vIHByb2JsZW0KPiA+IGF0IGFsbC4gSSByZWJvb3Rl ZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQgbm90aGluZyBoYXMgY2hhbmdlZC4KPiA+Cj4g PiBBbnkgc3VnZ2VzdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLgo+ID4KPiBXaXRo b3V0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXQncyBoYXJkIHRvIHNheSB3aGF0IGlzIGdvaW5n IG9uLiBGaXJzdAo+IG9mIGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21l dGhpbmcgaXMgZHVtcGVkIHRvIGVycm9yCj4gbG9nLiBUaGVuIHRyeSB0byBydW4gbmF1dGlsdXMg b3IgZ25vbWUtc2Vzc2lvbiB1bmRlciBzdHJhY2UgYW5kIGZpbmQgdGhlCj4gcGxhY2Ugd2hlcmUg aXQgaGFuZ3MuCj4KPiBZb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDoKPgo+IHdpdGggZ2RiIHlvdSBz aG91bGQgbG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGgKPgo+ IGdkYiAtLXBpZD08bmF1dGlsdXNfcGlkPgo+Cj4gYW5kIGNvbGxlY3QgYmFja3RyYWNlIHdpdGgg InRocmVhZCBhcHBseSBhbGwgYnQiIGNvbW1hbmQuIFlvdSBuZWVkIHRvCj4gaW5zdGFsbCBkZWJ1 ZyBwYWNrYWdlcyBpbnN0YWxsZWQuCj4KPgo+Cg== ------=_Part_22870_26670651.1149847094006 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5PGJyPjxicj5JIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dp bmcgYW5kIGZvdW5kIHRoZSBwcm9ibGVtLjxicj5JIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQg d2FzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZTxicj5JJ3ZlIG1hZGUgaW4gZ3N0 cmVhbWVyLTAuMTAuPGJyPjxicj5nc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYu cnBtCjxicj5nc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLTAuMTAuNy4yLTAuZ3N0LjEuNC5pMzg2 LnJwbTxicj5nc3RyZWFtZXIwMTAtZGV2ZWwtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtPGJy PmdzdHJlYW1lci10b29scy0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG08YnI+Z3N0cmVhbWVy MDEwLXBsdWdpbnMtYmFzZS1kZXZlbC0wLjEwLjcuMi0wLmdzdC4xLjQuaTM4Ni5ycG0gPGJyPgo8 YnI+SSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVsZWFzZSBhbmQgbmF1dGlsdXMg aXMgc3RhcnRpbmcgYWdhaW4uPGJyPldoeSB3b3VsZCBuYXV0aWx1cyBkZXBlbmQgb24gdGhpcyBj cmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3I8YnI+cmh5dGhtYm94LTAuOS4gJnF1b3Q7bGRk IC91c3IvYmluL25hdXRpbHVzJnF1b3Q7IGRvZXMgbm90IHNob3cgYW55IGRlcGVuZGVuY3kuCjxi cj48YnI+V2hhdCBwYXJ0IG9mIGdub21lIGRvZXMgdXNlIGl0Pzxicj48YnI+VGhhbmsgeW91LCB2 ZXJ5IG11Y2guPGJyPjxicj4vUGF1bG8gUm9tYS48YnI+PGJyPjxkaXY+PHNwYW4gY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA2LzkvMDYsIDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1lIj5OaWNrb2xh eSBWLiBTaG15cmV2PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm5zaG15cmV2QHlhbmRleC5ydSI+ Cm5zaG15cmV2QHlhbmRleC5ydTwvYT4mZ3Q7IHdyb3RlOjwvc3Bhbj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIw NCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij73 IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVsbyBDYXZhbGNhbnRpINDJ28XUOgo8 YnI+Jmd0OyBIaSw8YnI+Jmd0Ozxicj4mZ3Q7IEkgYW0gaGF2aW5nIGEgcHJvYmxlbSB3aXRoIG5h dXRpbHVzIDIuMTAgZnJvbSBmZWRvcmEgNC48YnI+Jmd0OyBTaW5jZSB5ZXN0ZXJkYXksIGl0IGRv ZXMgbm90IHB1dCBhbnkgaWNvbiBvbiB0aGUgZGVza3RvcCwgYWx0aG91Z2ggaXQ8YnI+Jmd0OyBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo8YnI+Jmd0OyBJIHRyeSB0byBjbG9zZSB0aGUgZ25vbWUgc2Vzc2lvbiBpdCBoYW5ncyBhbmQg SSBoYXZlIHRvIGtpbGwmbmJzcDsmbmJzcDtYLjxicj4mZ3Q7PGJyPiZndDsgRXZlcnl0aGluZyBl bHNlIHNlZW1zIHRvIGJlIG5vcm1hbC4gSSBjYW4gbG9naW4gaW4ga2RlIHdpdGggbm8gcHJvYmxl bTxicj4mZ3Q7IGF0IGFsbC4gSSByZWJvb3RlZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQg bm90aGluZyBoYXMgY2hhbmdlZC4KPGJyPiZndDs8YnI+Jmd0OyBBbnkgc3VnZ2VzdGlvbiB3b3Vs ZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLjxicj4mZ3Q7PGJyPldpdGhvdXQgYWRkaXRpb25hbCBp bmZvcm1hdGlvbiBpdCdzIGhhcmQgdG8gc2F5IHdoYXQgaXMgZ29pbmcgb24uIEZpcnN0PGJyPm9m IGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21ldGhpbmcgaXMgZHVtcGVk IHRvIGVycm9yPGJyPmxvZy4gVGhlbiB0cnkgdG8gcnVuIG5hdXRpbHVzIG9yIGdub21lLXNlc3Np b24gdW5kZXIgc3RyYWNlIGFuZCBmaW5kIHRoZQo8YnI+cGxhY2Ugd2hlcmUgaXQgaGFuZ3MuPGJy Pjxicj5Zb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDo8YnI+PGJyPndpdGggZ2RiIHlvdSBzaG91bGQg bG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGg8YnI+PGJyPmdk YiAtLXBpZD0mbHQ7bmF1dGlsdXNfcGlkJmd0Ozxicj48YnI+YW5kIGNvbGxlY3QgYmFja3RyYWNl IHdpdGggJnF1b3Q7dGhyZWFkIGFwcGx5IGFsbCBidCZxdW90OyBjb21tYW5kLiBZb3UgbmVlZCB0 bwo8YnI+aW5zdGFsbCBkZWJ1ZyBwYWNrYWdlcyBpbnN0YWxsZWQuPGJyPjxicj48YnI+PC9ibG9j a3F1b3RlPjwvZGl2Pjxicj4K ------=_Part_22870_26670651.1149847094006-- From crotalus@superig.com.br Thu Jun 8 21:35:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AD8293B05AC for ; Thu, 8 Jun 2006 21:35:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18364-01 for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: from smtpsig-4.ig.com.br (smtpsig-4.ig.com.br [200.226.132.141]) by menubar.gnome.org (Postfix) with ESMTP id 304553B02FE for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: (qmail 26488 invoked from network); 9 Jun 2006 01:35:15 -0000 Received: from 200216029049.user.veloxzone.com.br (HELO [192.168.254.2]) (Usuario_autenticado:promac@superig.com.br@[200.216.29.49]) (envelope-sender ) by smtpsig-4.ig.com.br (qmail-ldap-1.03) with SMTP for ; 9 Jun 2006 01:35:15 -0000 Message-ID: <4488D055.20009@superig.com.br> Date: Thu, 08 Jun 2006 22:35:17 -0300 From: Paulo Roma Cavalcanti Organization: UFRJ User-Agent: Thunderbird 1.5 (X11/20060119) MIME-Version: 1.0 To: nautilus-list@gnome.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=0.001 tagged_above=-999 required=2 tests=[BAYES_50=0.001] X-Spam-Score: 0.001 X-Spam-Level: X-Mailman-Approved-At: Fri, 09 Jun 2006 06:30:27 -0400 Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: roma@lcg.ufrj.br List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 01:35:23 -0000 Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. From alexl@redhat.com Fri Jun 9 10:23:21 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D9EBB3B010A for ; Fri, 9 Jun 2006 10:23:21 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30603-04 for ; Fri, 9 Jun 2006 10:23:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 219813B0393 for ; Fri, 9 Jun 2006 10:23:15 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5mso001978; Fri, 9 Jun 2006 10:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5miv011931; Fri, 9 Jun 2006 10:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5lwp005947; Fri, 9 Jun 2006 10:05:48 -0400 From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1149103242.8687.38.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1149103242.8687.38.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 09 Jun 2006 16:05:47 +0200 Message-Id: <1149861948.3023.61.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.549 tagged_above=-999 required=2 tests=[AWL=-0.025, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_BF=0.077] X-Spam-Score: -2.549 X-Spam-Level: Cc: Nautilus Subject: Re: nautilus hangs occasionnaly on a right click X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 14:23:22 -0000 On Wed, 2006-05-31 at 21:20 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Got it ! > Maybe it's the second time I send this message, but I don't find it in > my "sent" directory It looks like some sort of thread deadlock. Both the main thread and the thumbnailer thread are blocking on a libc mutex that looks like its in free(). The rest of the threads look normal, except this: Thread 11 (Thread -1213518928 (LWP 2980)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x09d05830 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb7ab11f8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () I dunno what that is. In this backtrace the thumbnailing thread was launching: "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/lf2006-04-21.aud.cafiero.34781.sbeok.flac16/lf2006-04-21audD1t01.ogg' '/tmp/.gnome_thumbnail.ObrcTQ'" to thumbnail some video. Maybe this is related. Could you repeat this whole procedure a bunch of time and send me the results. It might be possible to figure out the common attributes of the multiple backtraces. Its pretty hard to figure things out from this one only. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an otherworldly day-dreaming messiah whom everyone believes is mad. She's a scantily clad goth traffic cop who don't take no shit from nobody. They fight crime! From alexl@redhat.com Mon Jun 12 05:55:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 232653B0078 for ; Mon, 12 Jun 2006 05:55:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-02 for ; Mon, 12 Jun 2006 05:55:25 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937443B008A for ; Mon, 12 Jun 2006 05:55:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sfY0025126; Mon, 12 Jun 2006 05:54:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9satI014479; Mon, 12 Jun 2006 05:54:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sZEB015002; Mon, 12 Jun 2006 05:54:35 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1149705572.8926.8.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:54:35 +0200 Message-Id: <1150106076.3023.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:55:27 -0000 On Wed, 2006-06-07 at 21:39 +0300, Sivan Greenberg wrote: > Hi Again, the wonderful users and hacker of nautilus. > > I would like to bring your attention again to a patch I have created > originally using pure gnome_vfs functions to check if the source's > parent is read only, and if so default to a copy operation instead of a > move operation which previously caused hassle, confusing and much mess > among especially converts from other operating system, as to why "Such a > trivial operation needs to involve hassle and why do I even need to > think about it and select copy from the context menu??" etc.. ;-) > > So after realizing this patch is not good enough, due to it being inside > a callback which gets called multiple times per each DND operation, > Manny on the irc channel proposed I use instead of the native gnome-vfs > methods, the nautilus infras. for file manipulation (to check if the > source uri's parent is read only) , namely > libnautilus-private/nautilus-file.h::nautilus_file_get_existing > > and > > libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info > > Now my question is, should I get a new patch in the same a approach of > the previous one (which actually followed another patch approach, from > the file ownership bug) but with the this time cache enabled functions > of nautilus-file.h, will this be accepted by the upstream maintainers? > > I would hate to start work on it, just to realize I need to re-do it > again. > > Many thanks, and apologies for the spam :) This is tricky stuff. In general we try to avoid sync i/o in Nautilus, but its very complicated to do in the case of dnd where we really need a sync reply immediately or the ui looks weird (we don't immediately show the right cursor and you might have to wiggle the mouse to get it to change even). Another complication is that doing generic gnome-vfs i/o can cause authentication dialogs to pop up, which is bad during dnd. So, I think the best workaround is to continue using sync i/o in this case. But lets try minimizing it. So, only do this magic for local files (i.e. file: uris), stat as few times as possible and cache i/o results. So, the two patches in your mail need to be combined into one should_convert_move_to_copy() function that does at most one stat of the target and one of the source. Furthermore, we should cache the results of this function for the last target/source pair, which I think can be done by using user-data on the drag context. Does that sound good? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad sweet-toothed dwarf gone bad. She's a wealthy hip-hop hooker living homeless in New York's sewers. They fight crime! From alexl@redhat.com Mon Jun 12 05:56:54 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F4993B00A7 for ; Mon, 12 Jun 2006 05:56:54 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-03 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A5AC63B00A6 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMJV025635; Mon, 12 Jun 2006 05:56:22 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMGU014838; Mon, 12 Jun 2006 05:56:22 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uLdp015128; Mon, 12 Jun 2006 05:56:22 -0400 From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1149109286.3625.89.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:56:22 +0200 Message-Id: <1150106182.3023.107.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:56:54 -0000 On Wed, 2006-05-31 at 16:01 -0500, Federico Mena Quintero wrote: > Hi, > > I finally found the reason why volume icons overlap in the desktop > (http://bugzilla.gnome.org/show_bug.cgi?id=330298) > > finish_adding_new_icons() was ignoring all lazily-positioned icons when > filling up the PlacemenGrid. This caused the overlaps. The fix is to > make icon_set_position() turn off that flag in the icon. > > Also, once a lazily-positioned icon was moved to avoid overlaps, we > weren't emitting icon_position_changed so that the higher-level code > would save the new position metadata. This caused potential overlaps > when restarting Nautilus. > > Is this OK to commit? > > [This needs a little change to apply to Manny's latest version of > nautilus-icon-container.c, which doesn't have separate scaling values > for x/y, but that's a trivial change I'll make when applying the patch.] I thought this bug was fixed already? Manny, whats your opinion on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding overambitious jungle king with a winning smile and a way with the ladies. She's a plucky hypochondriac wrestler looking for love in all the wrong places. They fight crime! From alexl@redhat.com Mon Jun 12 05:58:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 439223B00A6 for ; Mon, 12 Jun 2006 05:58:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29028-05 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 99BAF3B00D8 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5O0026237; Mon, 12 Jun 2006 05:58:05 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5oH015029; Mon, 12 Jun 2006 05:58:05 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w4Lp015176; Mon, 12 Jun 2006 05:58:05 -0400 From: Alexander Larsson To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:58:04 +0200 Message-Id: <1150106285.3023.109.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:58:34 -0000 On Fri, 2006-06-02 at 10:49 +0100, James Pharaoh wrote: > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. We used to look for a ".directory" file in each directory that let you set both icon and name for the directory (the file used was a desktop file). However, looking for an extra file each time we look at a directory was a significant performance problem, so this was removed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly small-town matador on a mission from God. She's a high-kicking African-American stripper with her own daytime radio talk show. They fight crime! From alexl@redhat.com Mon Jun 12 06:03:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 47A983B008A; Mon, 12 Jun 2006 06:03:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29048-09; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937FE3B0083; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IEV027487; Mon, 12 Jun 2006 06:02:18 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IBT015943; Mon, 12 Jun 2006 06:02:18 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2G6h015653; Mon, 12 Jun 2006 06:02:17 -0400 From: Alexander Larsson To: Xavier Claessens In-Reply-To: <1149501410.7231.27.camel@zdra-desktop> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> <1149501410.7231.27.camel@zdra-desktop> Content-Type: text/plain Date: Mon, 12 Jun 2006 12:02:16 +0200 Message-Id: <1150106537.3023.112.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: Christian Neumair , Vincent Untz , "nautilus-list@gnome.org" , Mark McLoughlin Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 10:03:01 -0000 On Mon, 2006-06-05 at 11:56 +0200, Xavier Claessens wrote: > So what I propose is adding some objects to libnautilus-private to have > a common way handling Drive and Volume files. In the same way of > nautilus_destkop_* we can make something like nautilus_volume_file and > nautilus_drive_file which would be used to computer:///, > x-nautilus-desktop:///,etc. > > On this objects we can have methods like > > gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); > > to replace the eject_for_type(). And > > void nautilus_volume_file_get_options (NautilusDriveFile*, > gboolean *show_mount, > gboolean *show_unmount, > gboolean *show_eject, > gboolean *show_format); > > To know which options we can show for this file. > > I don't know exactly how all that can work and if that's a good idea but > I can work on it this summer. I'll experiment some patches as soon as my > exams finishes. > > I would be happy to have comments on this. I'm not sure we really need a new object type for this (since there are full-blown objects for volume and drive already this will just cause pain). However, moving these functions into one shared place in libnautilus-private and generalizing them as best we can sounds like a good plan. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a maverick overambitious filmmaker with a robot buddy named Sparky. She's a wealthy communist doctor from a family of eight older brothers. They fight crime! From sivan@ubuntu.com Tue Jun 13 06:01:08 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9334F3B000C for ; Tue, 13 Jun 2006 06:01:08 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18979-03 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8D3323B00C9 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from bzq-84-108-224-64.cablep.bezeqint.net (bzq-84-108-224-64.cablep.bezeqint.net [84.108.224.64]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8778C1053A; Tue, 13 Jun 2006 11:59:56 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150106076.3023.105.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Tue, 13 Jun 2006 12:59:56 +0300 Message-Id: <1150192797.6544.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.417 tagged_above=-999 required=2 tests=[AWL=0.047, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.417 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 10:01:08 -0000 On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > Another complication is that doing generic gnome-vfs i/o can cause > authentication dialogs to pop up, which is bad during dnd. If it occurs during after a remote sessions has been dropped and the target window is till on, I can't see why it can create a problem. (I believe Win32 based platforms follow this approach as well) > So, the two patches in your mail need to be combined into one > should_convert_move_to_copy() function that does at most one stat of the > target and one of the source. Furthermore, we should cache the results > of this function for the last target/source pair, which I think can be > done by using user-data on the drag context. Some question: * The user ownership patch was not created by me, I think it's taken from nautilus's CVS ;-) * Wouldn't it be easier and more readable to use nautilus own already cache enabled file permissoin and access functions ? (as in libnautilus-private/nautilus-file.h, Manny noted to me these are cache enabled) Cheers, Sivan From alexl@redhat.com Tue Jun 13 07:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D0B863B000A for ; Tue, 13 Jun 2006 07:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20874-04 for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9B2343B000C for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOH0b003764; Tue, 13 Jun 2006 06:24:17 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOHxZ029012; Tue, 13 Jun 2006 06:24:17 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOGuB003508; Tue, 13 Jun 2006 06:24:16 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150192797.6544.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> Content-Type: text/plain Date: Tue, 13 Jun 2006 12:24:14 +0200 Message-Id: <1150194254.3023.167.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:13:45 -0000 On Tue, 2006-06-13 at 12:59 +0300, Sivan Greenberg wrote: > On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > > > Another complication is that doing generic gnome-vfs i/o can cause > > authentication dialogs to pop up, which is bad during dnd. > > If it occurs during after a remote sessions has been dropped and the > target window is till on, I can't see why it can create a problem. (I > believe Win32 based platforms follow this approach as well) If you do i/o while the drag is happening you'll get the dialog while you're dragging. This is bad in itself, for instance you can't type or click on it without releasing the drag, and then there are potential risks for stuck pointer grabs with modal dialogs. > > So, the two patches in your mail need to be combined into one > > should_convert_move_to_copy() function that does at most one stat of the > > target and one of the source. Furthermore, we should cache the results > > of this function for the last target/source pair, which I think can be > > done by using user-data on the drag context. > > Some question: > > * The user ownership patch was not created by me, I think it's taken > from nautilus's CVS ;-) So? Just change it. :) > * Wouldn't it be easier and more readable to use nautilus own already > cache enabled file permissoin and access functions ? (as in > libnautilus-private/nautilus-file.h, Manny noted to me these are cache > enabled) NautilusFile is the nautilus async machinery. Take a look at for instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some details how it works. You can't really use this in a sync way (except if you're lucky and the info was already cached). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted voodoo paramedic haunted by an iconic dead American confidante She's a radical red-headed femme fatale with an evil twin sister. They fight crime! From federico@ximian.com Tue Jun 13 12:03:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 736FB3B00DB for ; Tue, 13 Jun 2006 12:03:41 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29142-07 for ; Tue, 13 Jun 2006 12:03:39 -0400 (EDT) Received: from peabody.ximian.com (peabody.ximian.com [130.57.169.10]) by menubar.gnome.org (Postfix) with ESMTP id F40593B0071 for ; Tue, 13 Jun 2006 12:03:38 -0400 (EDT) Received: (qmail 22918 invoked from network); 13 Jun 2006 15:55:54 -0000 Received: from localhost (HELO 164-99-120-90.boston.ximian.com) (127.0.0.1) by localhost with SMTP; 13 Jun 2006 15:55:54 -0000 From: Federico Mena Quintero To: Alexander Larsson In-Reply-To: <1150106182.3023.107.camel@greebo> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> Content-Type: text/plain Date: Tue, 13 Jun 2006 10:51:33 -0500 Message-Id: <1150213894.17566.105.camel@cacharro.xalalinux.org> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.574 tagged_above=-999 required=2 tests=[AWL=0.025, BAYES_00=-2.599] X-Spam-Score: -2.574 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 16:03:41 -0000 On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > I thought this bug was fixed already? > Manny, whats your opinion on this? I believe Manny's patches were about fine-tuning the placement grid and positioning in general. My patch is about maintaining the right metadata for icons by emitting the signal as appropriate, and about really maintaining the position of icons which were lazily placed. Federico From sivan@ubuntu.com Tue Jun 13 18:40:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0FA973B00C9 for ; Tue, 13 Jun 2006 18:40:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08820-08 for ; Tue, 13 Jun 2006 18:40:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 015523B000E for ; Tue, 13 Jun 2006 18:40:30 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id DB37F4509; Wed, 14 Jun 2006 00:39:17 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150194254.3023.167.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 01:39:21 +0300 Message-Id: <1150238361.5853.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 22:40:34 -0000 On Tue, 2006-06-13 at 12:24 +0200, Alexander Larsson wrote: > NautilusFile is the nautilus async machinery. Take a look at for > instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some > details how it works. You can't really use this in a sync way (except if > you're lucky and the info was already cached). > Cool, so should I just aim to use stock sync and cached up file access functions from gnome-vfs ? (I understand from that you are suggesting to refrain from using the sync func of nautilus-io) Sivan From alexl@redhat.com Wed Jun 14 03:06:36 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8E1163B0014 for ; Wed, 14 Jun 2006 03:06:36 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20144-09 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2B58E3B0004 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75miD013721; Wed, 14 Jun 2006 03:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75mMR009753; Wed, 14 Jun 2006 03:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75l1O019900; Wed, 14 Jun 2006 03:05:48 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150238361.5853.0.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 09:05:47 +0200 Message-Id: <1150268748.3023.170.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 07:06:36 -0000 On Wed, 2006-06-14 at 01:39 +0300, Sivan Greenberg wrote: > > Cool, so should I just aim to use stock sync and cached up file access > functions from gnome-vfs ? (I understand from that you are suggesting > to > refrain from using the sync func of nautilus-io) You might as well use g_stat() if you're working on local files only. Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also an automatic check for local files, since it returns NULL for other uris.) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal pirate barbarian with a robot buddy named Sparky. She's a manipulative bisexual college professor from a different time and place. They fight crime! From sivan@ubuntu.com Wed Jun 14 05:35:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 16DF43B04FC for ; Wed, 14 Jun 2006 05:35:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26784-02 for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8457E3B053D for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id E28F629CD05; Wed, 14 Jun 2006 11:34:00 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150268748.3023.170.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 12:34:06 +0300 Message-Id: <1150277646.6568.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:35:24 -0000 On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > You might as well use g_stat() if you're working on local files only. > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > an automatic check for local files, since it returns NULL for other > uris.) I hope it's going to be easy as it seems ;-). On a related note, why are g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , (gnome_vfs_get_file_info_uri()) Sivan From alexl@redhat.com Wed Jun 14 05:47:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id F0D593B040E for ; Wed, 14 Jun 2006 05:47:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27324-08 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 83C2E3B04B3 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9keHl002050; Wed, 14 Jun 2006 05:46:40 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kZtw005095; Wed, 14 Jun 2006 05:46:35 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kYt0002077; Wed, 14 Jun 2006 05:46:34 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150277646.6568.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 11:46:34 +0200 Message-Id: <1150278394.26621.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:47:32 -0000 On Wed, 2006-06-14 at 12:34 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > > > You might as well use g_stat() if you're working on local files only. > > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > > an automatic check for local files, since it returns NULL for other > > uris.) > > I hope it's going to be easy as it seems ;-). On a related note, why are > g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones > I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , > (gnome_vfs_get_file_info_uri()) They are not cached. You have to implement that yourself. The reason to use g_stat directly is just to avoid lots of levels of indirection and bloat when its not needed (i.e. you're only doing this for local files anyway). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding one-eyed jungle king on his last day in the job. She's a man-hating goth mercenary who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From sivan@ubuntu.com Wed Jun 14 09:28:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 748873B029B for ; Wed, 14 Jun 2006 09:28:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15163-07 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 29D2E3B0119 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from [192.168.2.101] (87.69.31.132.cable.012.net.il [87.69.31.132]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BB0CC2A6BFD; Wed, 14 Jun 2006 15:27:18 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 16:26:56 +0300 Message-Id: <1150291617.5322.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 13:28:07 -0000 On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf@free.fr Wed Jun 14 15:43:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 870EF3B000E for ; Wed, 14 Jun 2006 15:43:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04192-03 for ; Wed, 14 Jun 2006 15:43:40 -0400 (EDT) Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by menubar.gnome.org (Postfix) with ESMTP id 6A4B33B0102 for ; Wed, 14 Jun 2006 15:43:39 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp1-g19.free.fr (Postfix) with ESMTP id 7F91C9AE0E; Wed, 14 Jun 2006 21:43:08 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Content-Type: multipart/mixed; boundary="=-6ha9yoI4TiErFtbzzRYq" Date: Wed, 14 Jun 2006 21:43:02 +0200 Message-Id: <1150314184.8687.75.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.511 tagged_above=-999 required=2 tests=[AWL=-0.066, BAYES_00=-2.599, TW_BF=0.077, TW_XB=0.077] X-Spam-Score: -2.511 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 19:43:44 -0000 --=-6ha9yoI4TiErFtbzzRYq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick --=-6ha9yoI4TiErFtbzzRYq Content-Disposition: attachment; filename=nautilushang2 Content-Type: text/plain; name=nautilushang2; charset=utf-8 Content-Transfer-Encoding: 7bit [pjacquot@neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot@neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) --=-6ha9yoI4TiErFtbzzRYq-- From alexl@redhat.com Thu Jun 15 03:31:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2922C3B002B for ; Thu, 15 Jun 2006 03:31:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19338-08 for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 96E493B00FE for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJGA017396; Thu, 15 Jun 2006 03:31:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJPR008545; Thu, 15 Jun 2006 03:31:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VIdM006092; Thu, 15 Jun 2006 03:31:18 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Thu, 15 Jun 2006 09:31:16 +0200 Message-Id: <1150356676.26621.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:31:24 -0000 On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application@ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Thu Jun 15 03:32:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 08A5B3B0126 for ; Thu, 15 Jun 2006 03:32:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19413-06 for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 8B3E63B002B for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WfUL017815; Thu, 15 Jun 2006 03:32:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7Wa1T008783; Thu, 15 Jun 2006 03:32:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WZ5W006145; Thu, 15 Jun 2006 03:32:36 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Content-Type: text/plain Date: Thu, 15 Jun 2006 09:32:35 +0200 Message-Id: <1150356755.26621.8.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:32:58 -0000 On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot@anpe.fr Thu Jun 15 04:17:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DED9A3B0298 for ; Thu, 15 Jun 2006 04:17:30 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22167-05 for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from smtp3.lc.anpe.fr (smtp3.lc.anpe.fr [80.118.163.18]) by menubar.gnome.org (Postfix) with ESMTP id 45FFD3B00FE for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from HOMERE02.anpe.fr (localhost.localdomain [127.0.0.1]) by smtp3.lc.anpe.fr (antivirus) with ESMTP id 9498573CB7; Thu, 15 Jun 2006 10:17:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE02.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 15 Jun 2006 10:15:57 +0200 Message-ID: <44911757.6070100@anpe.fr> Date: Thu, 15 Jun 2006 10:16:23 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> In-Reply-To: <1150356676.26621.5.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 15 Jun 2006 08:15:57.0655 (UTC) FILETIME=[EE03CE70:01C69053] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:17:31 -0000 Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application@ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl@redhat.com Thu Jun 15 04:31:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4597A3B045B for ; Thu, 15 Jun 2006 04:31:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22773-09 for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F8DD3B045A for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8Vl3p004055; Thu, 15 Jun 2006 04:31:47 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VlIQ020296; Thu, 15 Jun 2006 04:31:47 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VkBA014758; Thu, 15 Jun 2006 04:31:47 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Content-Type: text/plain Date: Thu, 15 Jun 2006 10:31:46 +0200 Message-Id: <1150360307.26621.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:31:58 -0000 On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan@ubuntu.com Thu Jun 15 04:36:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C31D23B0155 for ; Thu, 15 Jun 2006 04:36:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23178-08 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 5EC753B00F7 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from [192.168.1.222] (89.0.59.223.dynamic.barak-online.net [89.0.59.223]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 1F8982A6C13; Thu, 15 Jun 2006 10:36:22 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Thu, 15 Jun 2006 11:36:22 +0300 Message-Id: <1150360583.5504.4.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:36:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel@embl.fr Thu Jun 15 07:58:30 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE6BA3B041F for ; Thu, 15 Jun 2006 07:58:29 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04112-09 for ; Thu, 15 Jun 2006 07:58:26 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CD7493B04B1 for ; Thu, 15 Jun 2006 07:58:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FBwNm20535; Thu, 15 Jun 2006 13:58:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp020384; Thu Jun 15 13:58:01 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 68FD93A009C; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 5D65A3A008B; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Message-ID: <44914B5C.8040003@embl.fr> Date: Thu, 15 Jun 2006 13:58:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: nautilus-list@gnome.org References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> In-Reply-To: <1146067801.621.43.camel@greebo> Content-Type: multipart/mixed; boundary=------------030804040701090309040506 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.47 tagged_above=-999 required=2 tests=[AWL=-0.007, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.47 X-Spam-Level: Cc: grumz@grumz.net X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 11:58:30 -0000 This is a multi-part message in MIME format. --------------030804040701090309040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > --------------030804040701090309040506 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030804040701090309040506-- From ruaudel@embl.fr Thu Jun 15 08:30:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9028C3B0445 for ; Thu, 15 Jun 2006 08:30:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06870-02 for ; Thu, 15 Jun 2006 08:30:00 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 9B2383B042C for ; Thu, 15 Jun 2006 08:29:59 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FCTl110148; Thu, 15 Jun 2006 14:29:47 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp008288; Thu Jun 15 14:26:19 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 0C35E3A009C; Thu, 15 Jun 2006 14:25:32 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid E9DC23A008B; Thu, 15 Jun 2006 14:25:31 +0200 (CEST) Message-ID: <449151FE.2070906@embl.fr> Date: Thu, 15 Jun 2006 14:26:38 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> In-Reply-To: <44914B5C.8040003@embl.fr> Content-Type: multipart/mixed; boundary=------------040407040200090207040807 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:30.64249 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.536 tagged_above=-999 required=2 tests=[AWL=0.062, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.536 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 12:30:02 -0000 This is a multi-part message in MIME format. --------------040407040200090207040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Frédéric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl@redhat.com alla@lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > --------------040407040200090207040807 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------040407040200090207040807-- From patrick.jacquotf@free.fr Thu Jun 15 13:36:49 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5A7663B0397 for ; Thu, 15 Jun 2006 13:36:49 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25173-04 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 538763B0311 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 6676E4444D; Thu, 15 Jun 2006 19:34:32 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Content-Type: text/plain; charset=utf-8 Date: Thu, 15 Jun 2006 19:34:26 +0200 Message-Id: <1150392867.8687.79.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.585 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599] X-Spam-Score: -2.585 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 17:36:49 -0000 Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl@redhat.com Fri Jun 16 03:13:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA2653B002C for ; Fri, 16 Jun 2006 03:13:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20384-08 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A6B853B0011 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8Y3006797; Fri, 16 Jun 2006 02:45:08 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8bO013639; Fri, 16 Jun 2006 02:45:08 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j6oC001946; Fri, 16 Jun 2006 02:45:07 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 08:45:06 +0200 Message-Id: <1150440307.26621.41.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 07:13:58 -0000 On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan@ubuntu.com Fri Jun 16 04:03:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21E6E3B0076 for ; Fri, 16 Jun 2006 04:03:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21280-09 for ; Fri, 16 Jun 2006 04:03:28 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id E8EC33B0011 for ; Fri, 16 Jun 2006 04:03:27 -0400 (EDT) Received: from badtemperrodent.net (badtemperrodent.net [192.117.110.191]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8CFB82A6BFF; Fri, 16 Jun 2006 09:41:56 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Fri, 16 Jun 2006 10:39:05 +0300 Message-Id: <1150443545.5513.18.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:03:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl@redhat.com Fri Jun 16 04:16:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7A853B002C for ; Fri, 16 Jun 2006 04:16:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22202-08 for ; Fri, 16 Jun 2006 04:16:00 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F40B13B006C for ; Fri, 16 Jun 2006 04:15:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F9j6000439; Fri, 16 Jun 2006 04:15:09 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F46p028945; Fri, 16 Jun 2006 04:15:04 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F3cm012357; Fri, 16 Jun 2006 04:15:03 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:15:03 +0200 Message-Id: <1150445703.26621.60.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:16:01 -0000 On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl@redhat.com Fri Jun 16 04:41:12 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 557D03B0011 for ; Fri, 16 Jun 2006 04:41:12 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22567-09 for ; Fri, 16 Jun 2006 04:41:11 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id CFBBB3B0007 for ; Fri, 16 Jun 2006 04:41:10 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8Za55006178; Fri, 16 Jun 2006 04:35:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZV2m032257; Fri, 16 Jun 2006 04:35:31 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZUux013456; Fri, 16 Jun 2006 04:35:30 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: Frederic Ruaudel In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:35:30 +0200 Message-Id: <1150446930.26621.70.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:41:12 -0000 On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin@xs4all.nl Fri Jun 16 05:04:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 98D7C3B002C for ; Fri, 16 Jun 2006 05:04:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23115-09 for ; Fri, 16 Jun 2006 05:04:27 -0400 (EDT) Received: from smtp-vbr11.xs4all.nl (smtp-vbr11.xs4all.nl [194.109.24.31]) by menubar.gnome.org (Postfix) with ESMTP id C07BF3B0007 for ; Fri, 16 Jun 2006 05:04:26 -0400 (EDT) Received: from [172.16.0.167] (a82-94-101-162.adsl.xs4all.nl [82.94.101.162]) (authenticated bits=0) by smtp-vbr11.xs4all.nl (8.13.6/8.13.6) with ESMTP id k5G93fN8053607 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Fri, 16 Jun 2006 11:03:41 +0200 (CEST) (envelope-from rubin@xs4all.nl) Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Rubin To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 16 Jun 2006 11:03:41 +0200 Message-Id: <1150448621.29988.7.camel@thinkpad> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 16 Jun 2006 05:24:20 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:04:28 -0000 Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when replying to this! Thanks! Rubin. From alexl@redhat.com Fri Jun 16 05:55:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id A4FE73B000B for ; Fri, 16 Jun 2006 05:55:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24488-05 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 411CE3B0012 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXBo031898; Fri, 16 Jun 2006 05:54:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXTM013747; Fri, 16 Jun 2006 05:54:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sW3W017065; Fri, 16 Jun 2006 05:54:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 11:54:32 +0200 Message-Id: <1150451672.26621.77.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:55:38 -0000 On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl@redhat.com Fri Jun 16 08:13:04 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21C553B006C for ; Fri, 16 Jun 2006 08:13:04 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27898-03 for ; Fri, 16 Jun 2006 08:13:03 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DC1763B002C for ; Fri, 16 Jun 2006 08:13:02 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCPrp006369; Fri, 16 Jun 2006 08:12:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCKTB004736; Fri, 16 Jun 2006 08:12:20 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCJn6025533; Fri, 16 Jun 2006 08:12:20 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Content-Type: text/plain Date: Fri, 16 Jun 2006 14:12:19 +0200 Message-Id: <1150459940.26621.88.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:13:04 -0000 On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:27:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 064A53B0011 for ; Fri, 16 Jun 2006 08:27:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28295-08 for ; Fri, 16 Jun 2006 08:27:55 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CB2B33B002C for ; Fri, 16 Jun 2006 08:27:54 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCR3Z13371; Fri, 16 Jun 2006 14:27:03 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp013140; Fri Jun 16 14:26:43 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id B41023A009C; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid A52D83A008B; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Message-ID: <4492A396.6040708@embl.fr> Date: Fri, 16 Jun 2006 14:27:02 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> In-Reply-To: <1150460132.26621.91.camel@greebo> Content-Type: multipart/mixed; boundary=------------090102050009040200050407 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:93.88275 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.474 tagged_above=-999 required=2 tests=[AWL=-0.011, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.474 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:27:57 -0000 This is a multi-part message in MIME format. --------------090102050009040200050407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? --------------090102050009040200050407 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090102050009040200050407-- From alexl@redhat.com Fri Jun 16 08:36:45 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8EEAD3B00A2 for ; Fri, 16 Jun 2006 08:36:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28772-01 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 3F2483B0076 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCa32c012746; Fri, 16 Jun 2006 08:36:03 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZwoG008648; Fri, 16 Jun 2006 08:35:58 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZvod026619; Fri, 16 Jun 2006 08:35:58 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:35:57 +0200 Message-Id: <1150461357.26621.94.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:36:45 -0000 On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Frédéric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:41:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE0873B0007 for ; Fri, 16 Jun 2006 08:41:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28628-04 for ; Fri, 16 Jun 2006 08:41:37 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 728BA3B0076 for ; Fri, 16 Jun 2006 08:41:35 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCebu21324; Fri, 16 Jun 2006 14:40:37 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021209; Fri Jun 16 14:40:26 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 6113F3A009C; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 569F63A008B; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Message-ID: <4492A6CE.1040904@embl.fr> Date: Fri, 16 Jun 2006 14:40:46 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> In-Reply-To: <1150461357.26621.94.camel@greebo> Content-Type: multipart/mixed; boundary=------------020601000705080507000607 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.542 tagged_above=-999 required=2 tests=[AWL=0.056, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.542 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:41:39 -0000 This is a multi-part message in MIME format. --------------020601000705080507000607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. --------------020601000705080507000607 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------020601000705080507000607-- From patrick.jacquot@anpe.fr Fri Jun 16 08:45:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8114F3B0074 for ; Fri, 16 Jun 2006 08:45:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28690-06 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from smtp2.lc.anpe.fr (smtp2.lc.anpe.fr [80.118.163.16]) by menubar.gnome.org (Postfix) with ESMTP id 5012E3B0012 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from HOMERE01.anpe.fr (amadeus [127.0.0.1]) by smtp2.lc.anpe.fr (antivirus) with ESMTP id 39F4673C9C; Fri, 16 Jun 2006 13:54:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE01.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Fri, 16 Jun 2006 13:53:25 +0200 Message-ID: <44929BCF.2080909@anpe.fr> Date: Fri, 16 Jun 2006 13:53:51 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> In-Reply-To: <1150440307.26621.41.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 16 Jun 2006 11:53:25.0151 (UTC) FILETIME=[795772F0:01C6913B] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:45:13 -0000 Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl@redhat.com Fri Jun 16 08:49:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 485F93B002C for ; Fri, 16 Jun 2006 08:49:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29026-04 for ; Fri, 16 Jun 2006 08:49:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C6C253B0007 for ; Fri, 16 Jun 2006 08:49:18 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPNN016840; Fri, 16 Jun 2006 08:48:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPYD011183; Fri, 16 Jun 2006 08:48:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmOqK027223; Fri, 16 Jun 2006 08:48:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:48:24 +0200 Message-Id: <1150462104.1962.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:49:20 -0000 On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Frédéric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:55:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D29373B0012 for ; Fri, 16 Jun 2006 08:55:43 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29229-01 for ; Fri, 16 Jun 2006 08:55:42 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 1229B3B0007 for ; Fri, 16 Jun 2006 08:55:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCrIL28510; Fri, 16 Jun 2006 14:53:18 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp028490; Fri Jun 16 14:53:17 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E00233A009C; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid D44943A008B; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Message-ID: <4492A9D0.1030804@embl.fr> Date: Fri, 16 Jun 2006 14:53:36 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> In-Reply-To: <1150462104.1962.1.camel@greebo> Content-Type: multipart/mixed; boundary=------------070000060703070709040705 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:55:44 -0000 This is a multi-part message in MIME format. --------------070000060703070709040705 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? --------------070000060703070709040705 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------070000060703070709040705-- From alexl@redhat.com Fri Jun 16 09:09:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B9E0D3B0076 for ; Fri, 16 Jun 2006 09:09:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29459-05 for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 570133B002C for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8PQk023537; Fri, 16 Jun 2006 09:08:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8Ptc015871; Fri, 16 Jun 2006 09:08:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8NU0029583; Fri, 16 Jun 2006 09:08:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 15:08:24 +0200 Message-Id: <1150463304.1962.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 13:09:10 -0000 On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris@gnome-de.org Fri Jun 16 10:02:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D214C3B0012 for ; Fri, 16 Jun 2006 10:02:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30453-09 for ; Fri, 16 Jun 2006 10:02:06 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 8119F3B000B for ; Fri, 16 Jun 2006 10:02:04 -0400 (EDT) Received: (qmail 95134 invoked by uid 85); 16 Jun 2006 14:01:10 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.188.32):. Processed in 4.939873 secs); 16 Jun 2006 14:01:10 -0000 Received: from p5496bc20.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.188.32) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 16 Jun 2006 14:01:05 -0000 Subject: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-72GyeevQ02c61O4EiZxt" Date: Fri, 16 Jun 2006 16:01:00 +0200 Message-Id: <1150466460.16424.7.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.51 tagged_above=-999 required=2 tests=[AWL=-0.065, BAYES_00=-2.599, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.51 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:02:08 -0000 --=-72GyeevQ02c61O4EiZxt Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair --=-72GyeevQ02c61O4EiZxt Content-Disposition: attachment; filename=nautilus-sm2.diff Content-Type: text/x-patch; name=nautilus-sm2.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit ? src/.nautilus-application.c.swp Index: configure.in =================================================================== RCS file: /cvs/gnome/nautilus/configure.in,v retrieving revision 1.675 diff -u -p -r1.675 configure.in --- configure.in 12 Jun 2006 12:35:55 -0000 1.675 +++ configure.in 16 Jun 2006 13:58:45 -0000 @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.226 diff -u -p -r1.226 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 18 Mar 2006 07:13:49 -0000 1.226 +++ libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 13:58:48 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.132 diff -u -p -r1.132 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 15 Dec 2005 14:32:57 -0000 1.132 +++ libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 13:58:49 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 16 Jun 2006 13:58:49 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 16 Jun 2006 13:59:00 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1139,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1172,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1326,265 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + g_message ("is %s\n", filename); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[4] = { NULL }; + + argv[0] = "nautilus"; + argv[1] = "--no-default-window"; + + argv[3] = save_session_to_file (); + if (argv[3] != NULL) { + argv[2] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[3] != NULL) { + g_free (argv[3]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 16 Jun 2006 13:59:00 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 16 Jun 2006 13:59:01 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,8 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + N_("Load a saved session from the specified file."), N_("FILENAME") }, { NULL } }; @@ -243,6 +246,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -349,6 +353,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 16 Jun 2006 13:59:05 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 16 Jun 2006 13:59:05 -0000 @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); void start_desktop (); void stop_desktop (); void quit (); Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 16 Jun 2006 13:59:06 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 16 Jun 2006 13:59:08 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 16 Jun 2006 13:59:14 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 16 Jun 2006 13:59:15 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 16 Jun 2006 13:59:19 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-72GyeevQ02c61O4EiZxt-- From ruaudel@embl.fr Fri Jun 16 10:17:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 041543B0007 for ; Fri, 16 Jun 2006 10:17:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31262-02 for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 409803B000B for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GEEN515027; Fri, 16 Jun 2006 16:14:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp014897; Fri Jun 16 16:14:14 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E9D453A00A3; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid BD85C3A009C; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Message-ID: <4492BCC9.3070701@embl.fr> Date: Fri, 16 Jun 2006 16:14:34 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> In-Reply-To: <1150463304.1962.5.camel@greebo> Content-Type: multipart/mixed; boundary=------------030607090300020602080800 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:17:27 -0000 This is a multi-part message in MIME format. --------------030607090300020602080800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred --------------030607090300020602080800 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030607090300020602080800-- From alexl@redhat.com Fri Jun 16 10:40:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 69B0D3B000B for ; Fri, 16 Jun 2006 10:40:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31864-09 for ; Fri, 16 Jun 2006 10:40:38 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F30943B0074 for ; Fri, 16 Jun 2006 10:40:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJwW018100 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJj5001340 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMI38001834 for ; Fri, 16 Jun 2006 10:22:18 -0400 Subject: New permissions page From: Alexander Larsson To: Nautilus Content-Type: text/plain Date: Fri, 16 Jun 2006 16:22:18 +0200 Message-Id: <1150467738.1962.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:40:39 -0000 I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl@redhat.com Fri Jun 16 10:45:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B94D3B000B for ; Fri, 16 Jun 2006 10:45:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32146-02 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id B3F8A3B0074 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXFs007293; Fri, 16 Jun 2006 08:15:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXJC005301; Fri, 16 Jun 2006 08:15:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFWR2025637; Fri, 16 Jun 2006 08:15:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:15:32 +0200 Message-Id: <1150460132.26621.91.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:45:34 -0000 On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl@redhat.com Fri Jun 16 11:41:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA65B3B0080 for ; Fri, 16 Jun 2006 11:41:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01486-01 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 4FDAD3B0076 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFenfc011852; Fri, 16 Jun 2006 11:40:49 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFei3o019963; Fri, 16 Jun 2006 11:40:44 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFegbZ008520; Fri, 16 Jun 2006 11:40:43 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 17:40:37 +0200 Message-Id: <1150472437.1962.14.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 15:41:24 -0000 On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Frédéric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko@yahoo.com Sat Jun 17 03:33:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1350E3B028A for ; Sat, 17 Jun 2006 03:33:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12115-05 for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: from web32408.mail.mud.yahoo.com (web32408.mail.mud.yahoo.com [68.142.207.201]) by menubar.gnome.org (Postfix) with SMTP id 4082B3B071C for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: (qmail 60442 invoked by uid 60001); 17 Jun 2006 07:21:00 -0000 Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Received: from [172.188.218.75] by web32408.mail.mud.yahoo.com via HTTP; Sat, 17 Jun 2006 08:21:00 BST Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) From: Joachim Noreiko Subject: Re: New permissions page To: nautilus-list@gnome.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.909 tagged_above=-999 required=2 tests=[AWL=-1.446, BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: -0.909 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 07:33:56 -0000 --- nautilus-list-request@gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel@embl.fr Sat Jun 17 22:34:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDE743B00B2 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20813-01 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 5EF613B0087 for ; Sat, 17 Jun 2006 22:34:38 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5G92UM21496; Fri, 16 Jun 2006 11:02:30 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021214; Fri Jun 16 11:02:03 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 044C73A00A3; Fri, 16 Jun 2006 11:01:15 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid EC8163A008B; Fri, 16 Jun 2006 11:01:14 +0200 (CEST) Message-ID: <4492739C.3080608@embl.fr> Date: Fri, 16 Jun 2006 11:02:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Content-Type: multipart/mixed; boundary=------------000207040807030500030609 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:52.55345 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:43 -0000 This is a multi-part message in MIME format. --------------000207040807030500030609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred --------------000207040807030500030609 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------000207040807030500030609-- From ruaudel@embl.fr Sat Jun 17 22:34:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3A48B3B00DC for ; Sat, 17 Jun 2006 22:34:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20639-05 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id C6F0D3B0128 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GBrm324709; Fri, 16 Jun 2006 13:53:48 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp024600; Fri Jun 16 13:53:28 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id C79C53A009C; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid B98E93A008B; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Message-ID: <44929BCB.3000405@embl.fr> Date: Fri, 16 Jun 2006 13:53:47 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> In-Reply-To: <1150451672.26621.77.camel@greebo> Content-Type: multipart/mixed; boundary=------------090306030603010903060903 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:44 -0000 This is a multi-part message in MIME format. --------------090306030603010903060903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > --------------090306030603010903060903 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090306030603010903060903-- From alexl@redhat.com Mon Jun 19 05:34:55 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0A03B3B00A5 for ; Mon, 19 Jun 2006 05:34:55 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-04 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 7FA463B00A4 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XWjY003333; Mon, 19 Jun 2006 05:33:32 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XRpk001435; Mon, 19 Jun 2006 05:33:27 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XQSo027998; Mon, 19 Jun 2006 05:33:27 -0400 Subject: Re: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Alexander Larsson To: Rubin In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Content-Type: text/plain Date: Mon, 19 Jun 2006 11:33:26 +0200 Message-Id: <1150709607.1962.31.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:34:55 -0000 On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel@gmail.com Sat Jun 17 22:37:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B99513B00B2 for ; Sat, 17 Jun 2006 22:37:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20627-08 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.227]) by menubar.gnome.org (Postfix) with ESMTP id 981F23B0089 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: by wr-out-0506.google.com with SMTP id 68so857489wra for ; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.152.12 with SMTP id z12mr4476063wrd; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.102.7 with HTTP; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Date: Sat, 17 Jun 2006 20:36:28 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org Subject: widget advice for nautilus view MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:37:24 -0000 I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl@redhat.com Mon Jun 19 05:32:52 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D5A93B0004 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-02 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DA9513B008F for ; Mon, 19 Jun 2006 05:32:50 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9VmqA002779; Mon, 19 Jun 2006 05:31:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9Vm0L001128; Mon, 19 Jun 2006 05:31:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9ViJV027920; Mon, 19 Jun 2006 05:31:45 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Joachim Noreiko In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="=-HvacVzLTIJ84Cz/f7LbQ" Date: Mon, 19 Jun 2006 11:31:44 +0200 Message-Id: <1150709505.1962.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:32:52 -0000 --=-HvacVzLTIJ84Cz/f7LbQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request@gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions1.png Content-Type: image/png; name=permissions1.png Content-Transfer-Encoding: base64 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 2Fgez04AAAAASUVORK5CYII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions2.png Content-Type: image/png; name=permissions2.png Content-Transfer-Encoding: base64 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 HMeyDhw7fhLv9Rvxe/CQq9eus2//AbX7k7VOgNr1G2eKPTfMzdP2rs//dZEzZ88zY/Y8eVloaBj/ XPkXADs7W7S10454unftzOMnT1i+cjVJScnIZDIe+gfkKUEpax8gOjqGCxf/JjU1FWdnJ2rWqM7i JX+SmJTE6zdvWLlqLV27dMp0Cmrtuo0kJCby6vVrVq9dR7eunXI8RaWsH+5urtStU4sp02by9Fkg MTEx3Lp1G9MyaUeUly7n/a6tjH0qiPpWrfYmISGBV69fs2bteoX9zSindjPGpeiz1y1RggH9erNk 6XJiY2N5ERzMug2b+G7IwDzHL+RekSSCsLBwZsycS+++g/A5cIhvvm7P5vVrM02TkJBAr74DMw3P AgOVlivau1Jm6qTxGBsbsXP3Xn7+cbh8BQa4/M8VlixbwZxZ03Es68DSxQvQ0dHml1/HE/nqVY71 WVlZcur4IQYN7EdYWBjjJvzGsP/9zKYt2/Bwd5NP979h3zFh3K/cuHGL5i3b8Pffl5g4fgzDv/9W 7dinT52EmZkpP4/8lfDwl+jp6eGzbyft27bBe91Guvfqy9gJk+TXX9TpT9Y6Ie1o7XEeli2Ag70d A/r3oW//wcydv4Axv4yQl8XFxzN67ESc3CqyYOFili1ZiJaWFlZWluzfs4Ojvidw8aiMR8WqjBj1 KykpuU8EytqHD3f5JCUlAbB+7Uqio2Nwr1CFOvUaU61qFSZPHCefXk9PD4lEQo3aDaheqz6elSsx fuyHi6fpOxJSqVRlP7xXr8DWxoZ6DZtSvVYDDh4+Srlyjgz//lt69hlAnQZNct3frH0qiPpSUlOp Uach1WvVp4pn5Uz9VSSndjPGpeizBxj76y+U93CnSrU6fN6qLd9/N1jcOlrEtACZOvfiL1swjRHj 5xAXm/u9cEEoaOVcK2QbN/m38fTuWbB/xKdIcHAI1tZWbN66nekz53D/9rUCq7u4+vbv1Wu0bN2O wMd+8utUH0tsQu7ExsayfuUChv40XuW0ppb2RfMHZYJQ0J743yvW9r3Xb2SN93r09fWZm89bWrMq 7r4p8zHHJuSdSASCkAfjxvzCuDG/FHcYBapG9WrF/pf6QvEQl+UFQRA0nEgEgiAIGk4kAkEQBA0n EoEgCIKGE4lAEARBw4lEIAiCoOFEIhAEQdBwIhEIgiBoOJEIBEEQNJxIBAUo62MwPxX5eTSloJhM JuPO3XssX7k630/dE4TC9EklAlNLe+zLuRdK3ddv3OT0mXOFUrem+eXXcdSo05CyzuVxdq9E3wFD eBEcnGmapKRkRo0ei4t7ZSp4VufPFatyVQ5pv/dTu35jnN0rUcGzOtNnzsk2jSKFXT9AxSo1GDTk e8ZNmCx/jnS68PCX9OwzAGf3SpSvXI1Zc+Yr/S1/deJN99vkaVjYOKqMT1Wdppb2OQ7pP1eujKIY 7vs9oFHTlvKH9zRo1JwDBw+rrE8oXOK3ht5r3rIN1tZW3LmR999xF9KUK+fIru+G4FjWgbdvo/jh 51F069GXc6ePyaeZOn0m9+77cfPaJd6+jaJVmw7Y2tjIf35YVfmq1d6s9l7Ptk3rKFfOkbdvozI9 mU2Vwq4f4N9L57l334+WrdtlK+vZZwC1a9Vg/dqVPH8RTIeOXTA2NuK7IYPyFG+6EydPc/josRzr yG2df53N/LjQXXv2cfrMWZVPDlMWg7WVFRvWrcbB3g4tLS32+xxk4qSpfNWmtVoxC4XjkzoiUMbf P4B2X3fB2b0SVnblaNS0JRcufnh494WLl2jW8kus7Zywc3Tjiy/by8tMLdMeGxkSEoqppT33/R4o bGfrtp00ad4KG3tn7BzdaNCoebZpfA4conLVWji5VWTHrj1qx5h+amnTlm1U8Kyebf7k5GTGTZiM s3slXNwrM33mHNwreGU6rePvH0Cnrj2xLeuKs3slxo6flGlvNDk5mTHjf6OcawVcPTyZNWd+tvjz e6rouyGDcCyb9khGY2Mjenbvyt179+XPxU1ISGDdhs0MH/YdBgYG2NhY069PT5YtX6VWeXJyMvN+ X8TY0SMpV85R3k7FCuXViq+w609XsmTOj5R8/PgJV69d53/DhiKVSinrYM/wYd+xes26PMWbLjQ0 jN8mT2Pe7Jx/DfXfq9cwtbQnISFBrTrLe7jLB9MyZdi6bQfLl/4hf3JYxvrUjaF0aWPKOtijpaVF QkICzwKD+KZjB4XLUCga/5lEEBMbS+tWn+Ozdycb163B3z+A4T/8LC8fOGQo9+8/YPNGb44c3Jvp 2b2X/joNgLm5GZf+Oo2zs1OObaxZu55hP/xMfHw8K5cvYYP3Kjp983WmaSJfvWL+gj/o2KEdb99G MXHSVLVjBAgLC2PX7n2M/XUU0dExmeZfsGgJy1eupmaN6uzcvgmZDCIiI+Xl0dExtOvYhavXrrNp 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 YII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions3.png Content-Type: image/png; name=permissions3.png Content-Transfer-Encoding: base64 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 iZ+aPf3U5P2hEBwSSkvT4O80Xkycd0Axm80/2qmkSqn6P7tuajSZcXF2wmjQnzuxDMD2+XeF0HYy BuOnZk8/NXl/KFyKdrmgTXkZPz6sDKqw/UuenVwQrFZb2y281JLIkPGzgRxQfiaQV7suDFY5AMuQ MeKQA8rPAf2fGZVx3pD3m2TIGHnIAeVnACvIU5QLhdxeMmSMOOSXFs4DOafzmBKVRG9v3/f6/YeA Vb4u7Po/FlB+DDoq4+eP/zqgZJ7IZkpUElOikoiISWHVZdewZ9+h7/28kVT8I8eO22UTXz/LEyFW q+Q6dOgw3r4BePsG4B8wmti4RD766JNB6UbyOnH8BN6+AWh7en7QvN/nOlc42X/wKFde+2ui4uYz O3kxN992F4XFpT9IV4qxdPUVvPPBJ/b7xqZmpkQl8cHHn9m51jYN0fELOJZ50m47Wm0ve/YdwmIZ uS8nlFdWMSUqiVdef1vCl5SWEzFr7nk942LIdTYMtP+IWXNJWbyau+75K+UVVRe9/IuNH7Itzxcj NkM5fmgHh3ZtYdKEcdz55wcwGAzf6zlTJk/kg7dewdVt5F6gPHFoJ2V5mfZLpfpxHn/+3rBaGeo/ gMryYirLi0iIj+eO399Jn043ZNqh/jOajOed1oqViOnT2PbNV7i6uV5Qvv827/f5b7glr63ffsdt d97DxvWryTy4g33bvyBy+jQ2XXfzDx5UUucmcfhIpv0+43gWAMdP5ti5fQePkJgwh+iZkXbbKS2r 4JY7/oTRaBr0zP8Wz7/8BiWl5d8r78WU62w4cWgnpWcyyD62h5eeeZSu7m42/OIGTp/J/8FkuBi4 FG15LoxYQFGgIDg4kPVrVmIwGOz2+uWWb1mx/iriUpaSNH8Fmz//2p7nxX//h5RFq5mdvJj1m64H oKy8kmtvvBW9Tnivor6hkd/c/kdikhYRk7SIvz782IjI2z8T2r33IGsvv464lKW8/tb7HDqSwerL rmHO3KW8+8FmSZ7s02dYueFqImPnce2Nt9LYNPTLVIeOZLB83S+YnbyY63/9O9o07d+rzKHaZyhY +/838LLxvj6+rFiejl5voFerZc/ufSQkphIWPol16y+npbkVrHDixEl8/IL48sstzJ6TyN1332fn tm3bTuq8hYybMJXnnnuRPbv3MTdlPuHjp/Dqq2+AFYqKilm9ZgO6Ph1Y4bHHn2JaRBRh4ZNIW7DE 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 tvrxfy1q6mPXqvNYAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions4.png Content-Type: image/png; name=permissions4.png Content-Transfer-Encoding: base64 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 yQv/D3ppEXAe/kOyAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ-- From alexl@redhat.com Mon Jun 19 08:41:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 006D43B09D7 for ; Mon, 19 Jun 2006 08:41:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11497-07 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F9AA3B0D96 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSaF8026601; Mon, 19 Jun 2006 08:28:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSZeG001636; Mon, 19 Jun 2006 08:28:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSYlg007366; Mon, 19 Jun 2006 08:28:35 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 14:28:35 +0200 Message-Id: <1150720115.16397.6.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 12:41:01 -0000 On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Mon Jun 19 10:47:50 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D3523B00D8 for ; Mon, 19 Jun 2006 10:47:50 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15911-05 for ; Mon, 19 Jun 2006 10:47:47 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id E9A213B0017 for ; Mon, 19 Jun 2006 10:47:46 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDndPq023522; Mon, 19 Jun 2006 09:49:39 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDnd7B020926; Mon, 19 Jun 2006 09:49:39 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDncHK013361; Mon, 19 Jun 2006 09:49:38 -0400 Subject: Re: widget advice for nautilus view From: Alexander Larsson To: Mark Kegel In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Content-Type: text/plain Date: Mon, 19 Jun 2006 15:49:38 +0200 Message-Id: <1150724978.16397.9.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 14:47:50 -0000 On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris@gnome-de.org Mon Jun 19 11:24:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3C37C3B0734 for ; Mon, 19 Jun 2006 11:24:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17721-01 for ; Mon, 19 Jun 2006 11:24:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 6A67C3B0832 for ; Mon, 19 Jun 2006 11:23:59 -0400 (EDT) Received: (qmail 2563 invoked by uid 85); 19 Jun 2006 15:23:03 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.155.81):. Processed in 0.207799 secs); 19 Jun 2006 15:23:03 -0000 Received: from p54969b51.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.155.81) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 19 Jun 2006 15:23:03 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:22:57 +0200 Message-Id: <1150730577.5245.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:24:07 -0000 Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl@redhat.com Mon Jun 19 11:55:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11E2B3B0924 for ; Mon, 19 Jun 2006 11:55:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18742-04 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9EBE23B03A9 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsBQf010743; Mon, 19 Jun 2006 11:54:11 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsAf3026315; Mon, 19 Jun 2006 11:54:10 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFs9M3009507; Mon, 19 Jun 2006 11:54:10 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:54:09 +0200 Message-Id: <1150732450.16397.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:55:11 -0000 On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl@redhat.com Tue Jun 20 04:09:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8B05B3B027F for ; Tue, 20 Jun 2006 04:09:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01941-05 for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 251463B027D for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K8916A009982; Tue, 20 Jun 2006 04:09:01 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K891t6001277; Tue, 20 Jun 2006 04:09:01 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K890Lx026400; Tue, 20 Jun 2006 04:09:00 -0400 Subject: Re: Overlapping icons, again From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Tue, 20 Jun 2006 10:09:00 +0200 Message-Id: <1150790940.16397.21.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 08:09:53 -0000 On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf@cbk.poznan.pl Tue Jun 20 09:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CA3763B044D for ; Tue, 20 Jun 2006 09:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17248-03 for ; Tue, 20 Jun 2006 09:13:42 -0400 (EDT) Received: from goliath.sylaba.poznan.pl (goliath.sylaba.poznan.pl [193.151.36.3]) by menubar.gnome.org (Postfix) with ESMTP id 25DD03B02A4 for ; Tue, 20 Jun 2006 09:13:41 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 97AC818D1E4; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from goliath.sylaba.poznan.pl ([127.0.0.1]) by localhost (goliath.sylaba.poznan.pl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 89603-01-62; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (ip-83-238-212-180.netia.com.pl [83.238.212.180]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 2C66318D1D2; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (venus.local.navi.pl [192.168.1.10]) by venus.local.navi.pl (8.13.1/8.13.1) with ESMTP id k5KDBxws022710; Tue, 20 Jun 2006 15:12:09 +0200 Subject: Re: New permissions page From: Olaf =?iso-8859-2?Q?Fr=B1czyk?= To: Alexander Larsson In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:11:58 +0200 Message-Id: <1150809118.17794.51.camel@venus.local.navi.pl> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at sylaba.poznan.pl X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.783 tagged_above=-999 required=2 tests=[AWL=-0.537, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_FAIL=1.142, TW_RW=0.077] X-Spam-Score: -1.783 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 13:13:45 -0000 On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf FrÄ…czyk From alexl@redhat.com Tue Jun 20 10:12:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2BAB13B02A4 for ; Tue, 20 Jun 2006 10:12:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19006-06 for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 478C83B03CF for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdm3v023018; Tue, 20 Jun 2006 09:39:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdmHs006573; Tue, 20 Jun 2006 09:39:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdk56015503; Tue, 20 Jun 2006 09:39:47 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Olaf =?UTF-8?Q?Fr=C4=85czyk?= In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:39:46 +0200 Message-Id: <1150810787.16397.40.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.55 tagged_above=-999 required=2 tests=[AWL=-0.026, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_RW=0.077] X-Spam-Score: -2.55 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 14:12:11 -0000 On Tue, 2006-06-20 at 15:11 +0200, Olaf FrÄ…czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris@gnome-de.org Tue Jun 20 13:59:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0F8003B00DD for ; Tue, 20 Jun 2006 13:59:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02118-05 for ; Tue, 20 Jun 2006 13:59:18 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 1655F3B000C for ; Tue, 20 Jun 2006 13:59:17 -0400 (EDT) Received: (qmail 68748 invoked by uid 85); 20 Jun 2006 17:58:56 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.204.200):. Processed in 2.796389 secs); 20 Jun 2006 17:58:56 -0000 Received: from p5496ccc8.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.204.200) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 20 Jun 2006 17:58:53 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Content-Type: multipart/mixed; boundary="=-bgJ4fvimCkwAPOVjBPdI" Date: Tue, 20 Jun 2006 19:58:49 +0200 Message-Id: <1150826329.5240.5.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.471 tagged_above=-999 required=2 tests=[AWL=-0.103, BAYES_00=-2.599, TW_GD=0.077, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.471 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 17:59:20 -0000 --=-bgJ4fvimCkwAPOVjBPdI Content-Type: text/plain Content-Transfer-Encoding: 7bit Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair --=-bgJ4fvimCkwAPOVjBPdI Content-Disposition: attachment; filename=nautilus-sm3.diff Content-Type: text/x-patch; name=nautilus-sm3.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.227 diff -u -p -r1.227 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 14:19:55 -0000 1.227 +++ libnautilus-private/nautilus-global-preferences.c 20 Jun 2006 17:52:00 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.133 diff -u -p -r1.133 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 14:19:55 -0000 1.133 +++ libnautilus-private/nautilus-global-preferences.h 20 Jun 2006 17:52:01 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 20 Jun 2006 17:52:06 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 20 Jun 2006 17:52:18 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -615,8 +621,13 @@ nautilus_application_startup (NautilusAp Nautilus_Shell_open_windows (shell, url_list, corba_startup_id, corba_geometry, browser_window, &ev); CORBA_free (url_list); } else if (!no_default_window) { + g_assert (session_to_load == NULL); Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1140,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1173,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1327,263 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[3] = { NULL }; + + argv[0] = "nautilus"; + + argv[2] = save_session_to_file (); + if (argv[2] != NULL) { + argv[1] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[2] != NULL) { + g_free (argv[2]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 20 Jun 2006 17:52:18 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 20 Jun 2006 17:52:20 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,9 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + /* Translators: --no-default-window is a nautilus command line parameter, don't modify it. */ + N_("Load a saved session from the specified file. Implies \"--no-default-window\"."), N_("FILENAME") }, { NULL } }; @@ -243,6 +247,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -262,6 +267,10 @@ main (int argc, char *argv[]) GNOME_PARAM_HUMAN_READABLE_NAME, _("Nautilus"), NULL); + if (session_to_load != NULL) { + no_default_window = TRUE; + } + /* Do this here so that gdk_display is initialized */ if (startup_id_copy == NULL) { /* Create a fake one containing a timestamp that we can use */ @@ -349,6 +358,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 20 Jun 2006 17:52:25 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 20 Jun 2006 17:52:25 -0000 @@ -17,6 +17,7 @@ module Nautilus { void stop_desktop (); void quit (); void restart (); + void load_session (in string filename); }; }; Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 20 Jun 2006 17:52:26 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 20 Jun 2006 17:52:31 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 20 Jun 2006 17:52:36 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 20 Jun 2006 17:52:37 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 20 Jun 2006 17:52:43 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-bgJ4fvimCkwAPOVjBPdI-- From alexl@redhat.com Wed Jun 21 03:27:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 58AA43B0D06 for ; Wed, 21 Jun 2006 03:27:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16837-02 for ; Wed, 21 Jun 2006 03:27:06 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C69353B041C for ; Wed, 21 Jun 2006 03:27:05 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7R0RA028083; Wed, 21 Jun 2006 03:27:00 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QuFv031841; Wed, 21 Jun 2006 03:26:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QrI9014055; Wed, 21 Jun 2006 03:26:55 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150826329.5240.5.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 09:26:53 +0200 Message-Id: <1150874813.16397.58.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 07:27:07 -0000 On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > The session restart command includes > > > "--no-default-window" (nautilus-application.c:save_session). > > > > I guess that is good enough, although we could also always do that when > > specifying a session. Its unlikely that people would use the session > > switch manually though, so it doesn't really matter. > > New patch attached, which takes into account your other worthy > suggestions and makes --load-session imply presence of > --no-default-window. Looks good to commit then. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish sweet-toothed grifter from the 'hood. She's a violent impetuous bounty hunter who dreams of becoming Elvis. They fight crime! From carey@internode.on.net Tue Jun 20 08:48:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 355CC3B04D7 for ; Tue, 20 Jun 2006 08:48:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15989-01 for ; Tue, 20 Jun 2006 08:48:52 -0400 (EDT) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by menubar.gnome.org (Postfix) with ESMTP id 42D563B0510 for ; Tue, 20 Jun 2006 08:48:51 -0400 (EDT) Received: from [192.168.1.24] (ppp7-187.lns1.syd7.internode.on.net [59.167.7.187]) by smtp3.adl2.internode.on.net (8.13.6/8.13.5) with ESMTP id k5KCll85011167 for ; Tue, 20 Jun 2006 22:17:48 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org Content-Type: text/plain Date: Tue, 20 Jun 2006 22:47:47 +1000 Message-Id: <1150807667.5243.53.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-Mailman-Approved-At: Wed, 21 Jun 2006 08:27:09 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 12:48:53 -0000 Hi, I have remote drives mounted via NFS/SMB/etc on my laptops, and due to these remote directories being mounted, nautilus thinks they are local, and tries to generate previews for everything (very much not fun over a 256kbit or 512kbit uplink). Anyone know if there is a gconf setting or some way to get nautilus to be smarter about this and detect remote directories automatically (ie. partition not local, so therefore remote, then don't show preview)? Or at the least, a way to manually disable previews on a per-directory basis? Any ideas are appreciated. From chris@gnome-de.org Wed Jun 21 12:26:19 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 942C13B0F02 for ; Wed, 21 Jun 2006 12:26:19 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20942-09 for ; Wed, 21 Jun 2006 12:26:16 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id A4DE83B0FEE for ; Wed, 21 Jun 2006 12:26:15 -0400 (EDT) Received: (qmail 75238 invoked by uid 85); 21 Jun 2006 16:26:09 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.201671 secs); 21 Jun 2006 16:26:09 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 16:26:09 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150874813.16397.58.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> <1150874813.16397.58.camel@greebo> Content-Type: text/plain Date: Wed, 21 Jun 2006 18:25:54 +0200 Message-Id: <1150907154.5245.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:26:19 -0000 Am Mittwoch, den 21.06.2006, 09:26 +0200 schrieb Alexander Larsson: > On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > > > The session restart command includes > > > > "--no-default-window" (nautilus-application.c:save_session). > > > > > > I guess that is good enough, although we could also always do that when > > > specifying a session. Its unlikely that people would use the session > > > switch manually though, so it doesn't really matter. > > > > New patch attached, which takes into account your other worthy > > suggestions and makes --load-session imply presence of > > --no-default-window. > > Looks good to commit then. Done :). -- Christian Neumair From chris@gnome-de.org Wed Jun 21 15:37:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 850B73B0090 for ; Wed, 21 Jun 2006 15:37:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00594-08 for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 40A563B007C for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: (qmail 73397 invoked by uid 85); 21 Jun 2006 19:37:12 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.304044 secs); 21 Jun 2006 19:37:12 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:37:12 -0000 Subject: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-rdcaTTcK9Z9jAJx6/pO4" Date: Wed, 21 Jun 2006 21:37:08 +0200 Message-Id: <1150918628.5245.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:37:28 -0000 --=-rdcaTTcK9Z9jAJx6/pO4 Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch should fix issues where handlers registered with GtkActionGroups override those registered with child widgets, cf. bug 345528 [1]. [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 -- Christian Neumair --=-rdcaTTcK9Z9jAJx6/pO4 Content-Disposition: attachment; filename=nautilus-window-keybindings.diff Content-Type: text/x-patch; name=nautilus-window-keybindings.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.465 diff -u -p -r1.465 nautilus-window.c --- src/nautilus-window.c 21 Jun 2006 16:26:23 -0000 1.465 +++ src/nautilus-window.c 21 Jun 2006 19:31:34 -0000 @@ -742,6 +742,35 @@ nautilus_window_realize (GtkWidget *widg update_cursor (NAUTILUS_WINDOW (widget)); } +/* try to propagate key press event to children before handling + * mnemonics related to action groups. This is for instance relevant + * when the GtkAction file deletion keybinding would be activated + * instead of the rename widget text deletion keybinding. + */ +static gint +nautilus_window_key_press_event (GtkWidget *widget, + GdkEventKey *event) +{ + GtkWindow *window = GTK_WINDOW (widget); + + if (!gtk_window_propagate_key_event (window, event) && + !gtk_window_activate_key (window, event)) { + /* skip GtkWindow handler, directly use GtkWidget method */ + + static GtkWidgetClass *gtk_widget_class = NULL; + if (gtk_widget_class == NULL) { + gtk_widget_class = g_type_class_peek (gtk_widget_get_type ()); + g_assert (gtk_widget_class != NULL); + g_assert (gtk_widget_class->key_press_event != NULL); + } + + return GTK_WIDGET_CLASS (gtk_widget_class)->key_press_event (widget, event); + } + + return TRUE; + +} + /* * Main API */ @@ -1583,6 +1612,7 @@ nautilus_window_class_init (NautilusWind GTK_WIDGET_CLASS (class)->show = nautilus_window_show; GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request; GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize; + GTK_WIDGET_CLASS (class)->key_press_event = nautilus_window_key_press_event; class->add_current_location_to_history_list = real_add_current_location_to_history_list; class->get_title = real_get_title; class->set_title = real_set_title; --=-rdcaTTcK9Z9jAJx6/pO4-- From chris@gnome-de.org Wed Jun 21 15:51:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B0923B00E2 for ; Wed, 21 Jun 2006 15:51:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01297-07 for ; Wed, 21 Jun 2006 15:51:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 566013B01E2 for ; Wed, 21 Jun 2006 15:50:59 -0400 (EDT) Received: (qmail 5765 invoked by uid 85); 21 Jun 2006 19:50:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 2.075383 secs); 21 Jun 2006 19:50:58 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:50:54 -0000 Subject: Re: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list In-Reply-To: <1150918628.5245.9.camel@localhost.localdomain> References: <1150918628.5245.9.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 21:50:50 +0200 Message-Id: <1150919450.5245.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:51:01 -0000 Am Mittwoch, den 21.06.2006, 21:37 +0200 schrieb Christian Neumair: > The attached patch should fix issues where handlers registered with > GtkActionGroups override those registered with child widgets, cf. bug > 345528 [1]. > > [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 It seems to break keynav in subtle ways, and requires a stricter modifier mask checking for our custom widgets (icon container etc.) which for instance eats alt+arrow key. -- Christian Neumair From patrick.jacquotf@free.fr Wed Jun 21 17:59:06 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4E9CA3B04CB for ; Wed, 21 Jun 2006 17:59:06 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08416-10 for ; Wed, 21 Jun 2006 17:59:05 -0400 (EDT) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by menubar.gnome.org (Postfix) with ESMTP id C303B3B0429 for ; Wed, 21 Jun 2006 17:59:04 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp4-g19.free.fr (Postfix) with ESMTP id CF45454943; Wed, 21 Jun 2006 23:59:01 +0200 (CEST) Subject: Re: Nautilus remote previews From: Patrick Jacquot To: Carey O'Shea In-Reply-To: <1150807667.5243.53.camel@carey-laptop> References: <1150807667.5243.53.camel@carey-laptop> Content-Type: text/plain; charset=utf-8 Date: Wed, 21 Jun 2006 23:58:55 +0200 Message-Id: <1150927136.12639.8.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.5) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.578 tagged_above=-999 required=2 tests=[AWL=0.021, BAYES_00=-2.599] X-Spam-Score: -2.578 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 21:59:06 -0000 Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > Hi, > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > these remote directories being mounted, nautilus thinks they are local, > and tries to generate previews for everything (very much not fun over a > 256kbit or 512kbit uplink). > > Anyone know if there is a gconf setting or some way to get nautilus to > be smarter about this and detect remote directories automatically (ie. > partition not local, so therefore remote, then don't show preview)? > > Or at the least, a way to manually disable previews on a per-directory > basis? > > Any ideas are appreciated. > > In the Nautilus preferences, tab "previews", you can ask the previews for "only local files"; separately for sound files and for "other previews" i.e. images. There are three choices for each category: _ never - always - for local files only HTH -- Patrick From carey@internode.on.net Thu Jun 22 02:11:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7BCC3B02D2 for ; Thu, 22 Jun 2006 02:11:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32425-06 for ; Thu, 22 Jun 2006 02:11:17 -0400 (EDT) Received: from ash25e.internode.on.net (ash25e.internode.on.net [203.16.214.182]) by menubar.gnome.org (Postfix) with ESMTP id 0FB013B0234 for ; Thu, 22 Jun 2006 02:11:16 -0400 (EDT) Received: from [192.168.1.2] (ppp19-139.lns2.syd7.internode.on.net [59.167.19.139]) by ash25e.internode.on.net (8.13.6/8.13.5) with ESMTP id k5M6BEqD069510 for ; Thu, 22 Jun 2006 15:41:14 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Re: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org In-Reply-To: <1150927136.12639.8.camel@proton> References: <1150807667.5243.53.camel@carey-laptop> <1150927136.12639.8.camel@proton> Content-Type: text/plain; charset=UTF-8 Date: Thu, 22 Jun 2006 16:11:13 +1000 Message-Id: <1150956674.22582.4.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:11:20 -0000 Thanks for your reply. My problem is that the "Local Files Only" option does not work with remotely mounted SMB directories. Is this problem known? Regards, Carey. On Wed, 2006-06-21 at 23:58 +0200, Patrick Jacquot wrote: > Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > > Hi, > > > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > > these remote directories being mounted, nautilus thinks they are local, > > and tries to generate previews for everything (very much not fun over a > > 256kbit or 512kbit uplink). > > > > Anyone know if there is a gconf setting or some way to get nautilus to > > be smarter about this and detect remote directories automatically (ie. > > partition not local, so therefore remote, then don't show preview)? > > > > Or at the least, a way to manually disable previews on a per-directory > > basis? > > > > Any ideas are appreciated. > > > > > In the Nautilus preferences, tab "previews", you can ask the previews > for "only local files"; separately for sound files and for > "other previews" i.e. images. There are three choices for each category: > _ never > - always > - for local files only > HTH From alan.gibson@gmail.com Thu Jun 22 02:26:00 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4B0F33B02AB for ; Thu, 22 Jun 2006 02:26:00 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01065-01 for ; Thu, 22 Jun 2006 02:25:59 -0400 (EDT) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by menubar.gnome.org (Postfix) with ESMTP id 6C3993B026A for ; Thu, 22 Jun 2006 02:25:58 -0400 (EDT) Received: by nf-out-0910.google.com with SMTP id h2so219295nfe for ; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.241.6 with SMTP id o6mr1278015nfh; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.231.16 with HTTP; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Message-ID: Date: Wed, 21 Jun 2006 23:25:57 -0700 From: "Alan Gibson" To: nautilus-list@gnome.org Subject: not landing in SFTP home directory MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:26:00 -0000 hello all. first post, good to be here. gnome, and by extension nautilus, are excellent apps. now to the problem: when i access an SFTP server added via "Connect to Server..." the default directory is the root of the server, not my home directory. the same operation with `sftp` lands me in my home directory. this behavior makes "connect to server" unusable for many users. this was filed as a bug, along with another problem, here: http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. anyone have any idea of the status of this, or if it this behavior is going to stay this way? thanks much, alan From alexl@redhat.com Thu Jun 22 03:43:59 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CED983B018C for ; Thu, 22 Jun 2006 03:43:59 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05592-05 for ; Thu, 22 Jun 2006 03:43:57 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 025A73B021B for ; Thu, 22 Jun 2006 03:43:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7huku029640; Thu, 22 Jun 2006 03:43:56 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7hugX028990; Thu, 22 Jun 2006 03:43:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7ht6g030438; Thu, 22 Jun 2006 03:43:55 -0400 Subject: Re: not landing in SFTP home directory From: Alexander Larsson To: Alan Gibson In-Reply-To: References: Content-Type: text/plain Date: Thu, 22 Jun 2006 09:43:54 +0200 Message-Id: <1150962235.16397.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 07:44:00 -0000 On Wed, 2006-06-21 at 23:25 -0700, Alan Gibson wrote: > hello all. first post, good to be here. gnome, and by extension > nautilus, are excellent apps. > > now to the problem: > > when i access an SFTP server added via "Connect to Server..." the > default directory is the root of the server, not my home directory. > the same operation with `sftp` lands me in my home directory. this > behavior makes "connect to server" unusable for many users. > > this was filed as a bug, along with another problem, here: > http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed > against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. > > anyone have any idea of the status of this, or if it this behavior is > going to stay this way? Its clearly a bug, so hopefully it'll get fixed eventually. The reason its not fixed is the standard "not enough resources" one. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a gun-slinging crooked card sharp plagued by the memory of his family's brutal murder. She's a provocative belly-dancing soap star married to the Mob. They fight crime! From chris@gnome-de.org Thu Jun 22 16:19:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 6CB943B0357 for ; Thu, 22 Jun 2006 16:19:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23663-07 for ; Thu, 22 Jun 2006 16:19:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 036763B0859 for ; Thu, 22 Jun 2006 16:18:04 -0400 (EDT) Received: (qmail 80585 invoked by uid 85); 22 Jun 2006 20:17:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.147.150):. Processed in 3.06236 secs); 22 Jun 2006 20:17:58 -0000 Received: from p54969396.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.147.150) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 22 Jun 2006 20:17:55 -0000 Subject: [PATCH] allow to drop URIs, URLs and text to subfolders From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-wko5hNaIXKFzt/OLy/jx" Date: Thu, 22 Jun 2006 22:17:51 +0200 Message-Id: <1151007472.19595.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 20:19:11 -0000 --=-wko5hNaIXKFzt/OLy/jx Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch considers subfolders as drop targets for non-GNOME Icon List drag data that refers to files. -- Christian Neumair --=-wko5hNaIXKFzt/OLy/jx Content-Disposition: attachment; filename=nautilus-dnd.diff Content-Type: text/x-patch; name=nautilus-dnd.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-file-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.c,v retrieving revision 1.7 diff -u -p -r1.7 nautilus-file-dnd.c --- libnautilus-private/nautilus-file-dnd.c 12 Dec 2005 16:59:10 -0000 1.7 +++ libnautilus-private/nautilus-file-dnd.c 22 Jun 2006 19:52:31 -0000 @@ -32,19 +32,14 @@ #include #include -gboolean -nautilus_drag_can_accept_item (NautilusFile *drop_target_item, - const char *item_uri) +static gboolean +nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; - gboolean res; - - if (nautilus_file_matches_uri (drop_target_item, item_uri)) { - /* can't accept itself */ - return FALSE; - } - + if (nautilus_file_is_directory (drop_target_item)) { + gboolean res; + /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); @@ -68,7 +63,19 @@ nautilus_drag_can_accept_item (NautilusF return FALSE; } - + +gboolean +nautilus_drag_can_accept_item (NautilusFile *drop_target_item, + const char *item_uri) +{ + if (nautilus_file_matches_uri (drop_target_item, item_uri)) { + /* can't accept itself */ + return FALSE; + } + + return nautilus_drag_can_accept_files (drop_target_item); +} + gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items) @@ -92,6 +99,39 @@ nautilus_drag_can_accept_items (Nautilus } return TRUE; +} + +gboolean +nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items) +{ + switch (drag_type) { + case NAUTILUS_ICON_DND_GNOME_ICON_LIST: + return nautilus_drag_can_accept_items (drop_target_item, items); + + case NAUTILUS_ICON_DND_URI_LIST: + case NAUTILUS_ICON_DND_URL: + case NAUTILUS_ICON_DND_TEXT: + return nautilus_drag_can_accept_files (drop_target_item); + + case NAUTILUS_ICON_DND_KEYWORD: + return TRUE; + + case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: + return FALSE; + + /* TODO return TRUE for folders as soon as drop handling is implemented */ + case NAUTILUS_ICON_DND_COLOR: + case NAUTILUS_ICON_DND_BGIMAGE: + case NAUTILUS_ICON_DND_RESET_BACKGROUND: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } + } void Index: libnautilus-private/nautilus-file-dnd.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.h,v retrieving revision 1.5 diff -u -p -r1.5 nautilus-file-dnd.h --- libnautilus-private/nautilus-file-dnd.h 22 Feb 2002 18:54:15 -0000 1.5 +++ libnautilus-private/nautilus-file-dnd.h 22 Jun 2006 19:52:31 -0000 @@ -25,6 +25,7 @@ #ifndef NAUTILUS_FILE_DND_H #define NAUTILUS_FILE_DND_H +#include #include #define NAUTILUS_FILE_DND_ERASE_KEYWORD "erase" @@ -33,6 +34,9 @@ gboolean nautilus_drag_can_accept_item const char *item_uri); gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items); +gboolean nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items); void nautilus_drag_file_receive_dropped_keyword (NautilusFile *file, const char *keyword); Index: libnautilus-private/nautilus-icon-container.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v retrieving revision 1.415 diff -u -p -r1.415 nautilus-icon-container.c --- libnautilus-private/nautilus-icon-container.c 15 May 2006 22:55:24 -0000 1.415 +++ libnautilus-private/nautilus-icon-container.c 22 Jun 2006 19:53:16 -0000 @@ -4596,8 +4604,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4609,8 +4618,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4622,8 +4632,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: libnautilus-private/nautilus-icon-container.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.h,v retrieving revision 1.92 diff -u -p -r1.92 nautilus-icon-container.h --- libnautilus-private/nautilus-icon-container.h 15 May 2006 22:55:24 -0000 1.92 +++ libnautilus-private/nautilus-icon-container.h 22 Jun 2006 19:53:18 -0000 Index: libnautilus-private/nautilus-icon-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-dnd.c,v retrieving revision 1.154 diff -u -p -r1.154 nautilus-icon-dnd.c --- libnautilus-private/nautilus-icon-dnd.c 15 May 2006 22:55:24 -0000 1.154 +++ libnautilus-private/nautilus-icon-dnd.c 22 Jun 2006 19:53:21 -0000 @@ -84,6 +84,10 @@ static void dnd_highlight_queue_redr static GtkTargetList *drop_types_list = NULL; static GtkTargetList *drop_types_list_root = NULL; +static char * nautilus_icon_container_find_drop_target (NautilusIconContainer *container, + GdkDragContext *context, + int x, int y, gboolean *icon_hit); + static EelCanvasItem * create_selection_shadow (NautilusIconContainer *container, GList *list) @@ -618,44 +622,65 @@ receive_dropped_keyword (NautilusIconCon /* handle dropped url */ static void -receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y) +receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragContext *context, int x, int y) { + char *drop_target; + if (encoded_url == NULL) { return; } + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_url", encoded_url, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped uri list */ static void -receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y) +receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragContext *context, int x, int y) { + char *drop_target; + if (uri_list == NULL) { return; } - + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_uri_list", uri_list, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped text */ static void -receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragAction action, int x, int y) +receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragContext *context, int x, int y) { + char *drop_target; + if (text == NULL) { return; } + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); g_signal_emit_by_name (container, "handle_text", text, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } static int @@ -843,7 +868,7 @@ handle_local_move (NautilusIconContainer nautilus_icon_container_add (container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - FALSE); + FALSE, FALSE); icon = nautilus_icon_container_get_icon_by_uri (container, item->uri); @@ -939,8 +964,11 @@ nautilus_icon_container_find_drop_target NautilusFile *file; char *icon_uri; - *icon_hit = FALSE; - if (container->details->dnd_info->drag_info.selection_list == NULL) { + if (icon_hit) { + *icon_hit = FALSE; + } + + if (!container->details->dnd_info->drag_info.got_drop_data_type) { return NULL; } @@ -959,8 +987,9 @@ nautilus_icon_container_find_drop_target if (icon_uri != NULL) { file = nautilus_file_get (icon_uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { /* the item we dropped our selection on cannot accept the items, * do the same thing as if we just dropped the items on the canvas */ @@ -973,11 +1002,16 @@ nautilus_icon_container_find_drop_target } if (drop_target_icon == NULL) { - *icon_hit = FALSE; + if (icon_hit) { + *icon_hit = FALSE; + } + return get_container_uri (container); } - *icon_hit = TRUE; + if (icon_hit) { + *icon_hit = TRUE; + } return nautilus_icon_container_get_icon_drop_target_uri (container, drop_target_icon); } @@ -1177,10 +1211,6 @@ nautilus_icon_dnd_update_drop_target (Na char *uri; g_assert (NAUTILUS_IS_ICON_CONTAINER (container)); - if ((container->details->dnd_info->drag_info.selection_list == NULL) - && (container->details->dnd_info->drag_info.data_type != NAUTILUS_ICON_DND_KEYWORD)) { - return; - } canvas_widget_to_world (EEL_CANVAS (container), x, y, &world_x, &world_y); @@ -1199,8 +1229,9 @@ nautilus_icon_dnd_update_drop_target (Na file = nautilus_file_get (uri); g_free (uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { icon = NULL; } @@ -1642,20 +1673,20 @@ drag_data_received_callback (GtkWidget * case NAUTILUS_ICON_DND_URL: receive_dropped_url (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_URI_LIST: receive_dropped_uri_list (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_TEXT: tmp = gtk_selection_data_get_text (data); receive_dropped_text (NAUTILUS_ICON_CONTAINER (widget), - (char *) tmp, context->action, x, y); + (char *) tmp, context, x, y); success = TRUE; g_free (tmp); break; Index: libnautilus-private/nautilus-marshal.list =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-marshal.list,v retrieving revision 1.11 diff -u -p -r1.11 nautilus-marshal.list --- libnautilus-private/nautilus-marshal.list 12 Dec 2005 16:59:10 -0000 1.11 +++ libnautilus-private/nautilus-marshal.list 22 Jun 2006 19:53:27 -0000 @@ -16,5 +16,6 @@ VOID:POINTER,POINTER VOID:POINTER,POINTER,POINTER,ENUM,INT,INT VOID:POINTER,STRING VOID:POINTER,STRING,ENUM,INT,INT +VOID:STRING,STRING,ENUM,INT,INT VOID:STRING,ENUM,INT,INT VOID:STRING,STRING Index: libnautilus-private/nautilus-tree-view-drag-dest.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-tree-view-drag-dest.c,v retrieving revision 1.14 diff -u -p -r1.14 nautilus-tree-view-drag-dest.c --- libnautilus-private/nautilus-tree-view-drag-dest.c 27 Feb 2006 21:54:58 -0000 1.14 +++ libnautilus-private/nautilus-tree-view-drag-dest.c 22 Jun 2006 19:53:31 -0000 @@ -306,7 +306,7 @@ get_drop_path (NautilusTreeViewDragDest NautilusFile *file; GtkTreePath *ret; - if (!path) { + if (!path || !dest->details->have_drag_data) { return NULL; } @@ -315,7 +315,9 @@ get_drop_path (NautilusTreeViewDragDest /* Go up the tree until we find a file that can accept a drop */ while (file == NULL /* dummy row */ || - !nautilus_drag_can_accept_items (file, dest->details->drag_list)) { + !nautilus_drag_can_accept_info (file, + dest->details->drag_type, + dest->details->drag_list)) { if (gtk_tree_path_get_depth (ret) == 1) { gtk_tree_path_free (ret); ret = NULL; @@ -333,8 +335,8 @@ get_drop_path (NautilusTreeViewDragDest } static char * -get_drop_target (NautilusTreeViewDragDest *dest, - GtkTreePath *path) +get_drop_target_uri_for_path (NautilusTreeViewDragDest *dest, + GtkTreePath *path) { NautilusFile *file; char *target; @@ -366,7 +368,7 @@ get_drop_action (NautilusTreeViewDragDes switch (dest->details->drag_type) { case NAUTILUS_ICON_DND_GNOME_ICON_LIST : - drop_target = get_drop_target (dest, path); + drop_target = get_drop_target_uri_for_path (dest, path); if (!drop_target) { return 0; @@ -383,9 +385,27 @@ get_drop_action (NautilusTreeViewDragDes return action; case NAUTILUS_ICON_DND_URL: - return nautilus_drag_default_drop_action_for_url (context); + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + action = nautilus_drag_default_drop_action_for_url (context); + + g_free (drop_target); + + return action; case NAUTILUS_ICON_DND_URI_LIST : + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + g_free (drop_target); + return context->suggested_action; case NAUTILUS_ICON_DND_TEXT: @@ -497,24 +517,43 @@ drag_leave_callback (GtkWidget *widget, remove_expand_timeout (dest); } -static void -receive_uris (NautilusTreeViewDragDest *dest, - GdkDragContext *context, - GList *source_uris, - int x, int y) +static char * +get_drop_target_uri_at_pos (NautilusTreeViewDragDest *dest, int x, int y) { char *drop_target; GtkTreePath *path; GtkTreePath *drop_path; GtkTreeViewDropPosition pos; - GdkDragAction action; gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, &path, &pos); drop_path = get_drop_path (dest, path); - drop_target = get_drop_target (dest, drop_path); + drop_target = get_drop_target_uri_for_path (dest, drop_path); + + if (path != NULL) { + gtk_tree_path_free (path); + } + + if (drop_path != NULL) { + gtk_tree_path_free (drop_path); + } + + return drop_target; +} + +static void +receive_uris (NautilusTreeViewDragDest *dest, + GdkDragContext *context, + GList *source_uris, + int x, int y) +{ + char *drop_target; + GdkDragAction action; + + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); if (context->action == GDK_ACTION_ASK) { if (nautilus_drag_selection_includes_special_link (dest->details->drag_list)) { @@ -540,14 +579,6 @@ receive_uris (NautilusTreeViewDragDest * x, y); } - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target); } @@ -583,14 +614,22 @@ receive_dropped_uri_list (NautilusTreeVi GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URI_LIST], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -598,18 +637,24 @@ receive_dropped_text (NautilusTreeViewDr GdkDragContext *context, int x, int y) { + char *drop_target; char *text; if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + text = gtk_selection_data_get_text (dest->details->drag_data); g_signal_emit (dest, signals[HANDLE_TEXT], 0, - (char *) text, + (char *) text, drop_target, context->action, x, y); + g_free (text); + g_free (drop_target); } @@ -618,14 +663,22 @@ receive_dropped_url (NautilusTreeViewDra GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URL], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -634,15 +687,14 @@ receive_dropped_keyword (NautilusTreeVie int x, int y) { char *drop_target_uri; - GtkTreePath *path, *drop_path; NautilusFile *drop_target_file; - gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, - &path, NULL); - - drop_path = get_drop_path (dest, path); + if (!dest->details->drag_data) { + return; + } - drop_target_uri = get_drop_target (dest, drop_path); + drop_target_uri = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target_uri != NULL); drop_target_file = nautilus_file_get (drop_target_uri); @@ -652,15 +704,6 @@ receive_dropped_keyword (NautilusTreeVie nautilus_file_unref (drop_target_file); } - - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target_uri); } @@ -854,8 +897,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -867,8 +911,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -880,8 +925,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.745 diff -u -p -r1.745 fm-directory-view.c --- src/file-manager/fm-directory-view.c 16 Jun 2006 15:40:18 -0000 1.745 +++ src/file-manager/fm-directory-view.c 22 Jun 2006 20:08:33 -0000 @@ -1415,7 +1415,7 @@ action_new_empty_file_callback (GtkActio { g_assert (FM_IS_DIRECTORY_VIEW (callback_data)); - fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL); + fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL, NULL); } static void @@ -4217,36 +4217,45 @@ setup_new_folder_data (FMDirectoryView * static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, + const char *parent_uri, const char *initial_contents) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; + + g_assert (parent_uri != NULL); data = setup_new_folder_data (directory_view); pos = context_menu_to_file_operation_position (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), pos, parent_uri, initial_contents, new_folder_done, data); - - g_free (parent_uri); } void fm_directory_view_new_file (FMDirectoryView *directory_view, + const char *parent_uri, NautilusFile *source) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; char *source_uri; + char *container_uri; + + container_uri = NULL; + if (parent_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (directory_view); + g_assert (container_uri != NULL); + } if (source == NULL) { - fm_directory_view_new_file_with_initial_contents (directory_view, NULL); + fm_directory_view_new_file_with_initial_contents (directory_view, + parent_uri != NULL ? parent_uri : container_uri, + NULL); + g_free (container_uri); return; } @@ -4257,17 +4266,16 @@ fm_directory_view_new_file (FMDirectoryV data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), pos, - parent_uri, + parent_uri != NULL ? parent_uri : container_uri, NULL, source_uri, new_folder_done, data); - g_free (parent_uri); g_free (source_uri); + g_free (container_uri); } /* handle the open command */ @@ -4782,7 +4790,8 @@ extension_action_callback_data_free (Ext { g_object_unref (data->item); nautilus_file_list_free (data->selection); - + g_object_unref (data->view); + g_free (data); } @@ -4826,6 +4835,12 @@ extension_action_slow_mime_types_ready_c g_free (item_name); if (is_valid) { + char *display; + + display = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (data->view))); + g_setenv ("DISPLAY", display, TRUE); + g_free (display); + nautilus_menu_item_activate (data->item); } @@ -4890,7 +4905,7 @@ add_extension_action_for_files (FMDirect data = g_new0 (ExtensionActionCallbackData, 1); data->item = g_object_ref (item); - data->view = view; + data->view = g_object_ref (view); data->selection = nautilus_file_list_copy (files); data->action = action; @@ -5567,7 +5582,7 @@ create_template_callback (GtkAction *act parameters = callback_data; - fm_directory_view_new_file (parameters->directory_view, parameters->file); + fm_directory_view_new_file (parameters->directory_view, NULL, parameters->file); } static void @@ -9632,6 +9647,7 @@ ask_link_action (FMDirectoryView *view) void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9652,10 +9668,13 @@ fm_directory_view_handle_url_drop (FMDir return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } - if (eel_vfs_has_capability (container_uri, + if (eel_vfs_has_capability (target_uri != NULL ? target_uri : container_uri, EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) { eel_show_warning_dialog (_("Drag and drop is not supported."), _("Drag and drop is only supported on local file systems."), @@ -9736,7 +9755,7 @@ fm_directory_view_handle_url_drop (FMDir screen = gtk_widget_get_screen (GTK_WIDGET (view)); screen_num = gdk_screen_get_number (screen); - nautilus_link_local_create (container_uri, + nautilus_link_local_create (target_uri != NULL ? target_uri : container_uri, link_name, link_display_name, "gnome-fs-bookmark", @@ -9758,7 +9777,7 @@ fm_directory_view_handle_url_drop (FMDir uri_list = g_list_append (uri_list, url); fm_directory_view_move_copy_items (uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); g_list_free (uri_list); @@ -9773,6 +9792,7 @@ fm_directory_view_handle_url_drop (FMDir void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9787,8 +9807,11 @@ fm_directory_view_handle_uri_list_drop ( return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } if (action == GDK_ACTION_ASK) { action = nautilus_drag_drop_action_ask @@ -9847,7 +9870,7 @@ fm_directory_view_handle_uri_list_drop ( } fm_directory_view_move_copy_items (real_uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); eel_g_list_free_deep (real_uri_list); @@ -9861,6 +9884,7 @@ fm_directory_view_handle_uri_list_drop ( void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9873,11 +9897,14 @@ fm_directory_view_handle_text_drop (FMDi g_return_if_fail (action == GDK_ACTION_COPY); - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } fm_directory_view_new_file_with_initial_contents ( - view, text); + view, target_uri != NULL ? target_uri : container_uri, text); g_free (container_uri); } Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.144 diff -u -p -r1.144 fm-directory-view.h --- src/file-manager/fm-directory-view.h 30 Mar 2006 19:37:22 -0000 1.144 +++ src/file-manager/fm-directory-view.h 22 Jun 2006 20:08:34 -0000 @@ -404,21 +404,25 @@ gboolean fm_directory_view_should_so void fm_directory_view_update_menus (FMDirectoryView *view); void fm_directory_view_new_folder (FMDirectoryView *view); void fm_directory_view_new_file (FMDirectoryView *view, + const char *parent_uri, NautilusFile *source); void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view); void fm_directory_view_init_view_iface (NautilusViewIface *iface); void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y); Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.323 diff -u -p -r1.323 fm-icon-view.c --- src/file-manager/fm-icon-view.c 15 May 2006 22:55:25 -0000 1.323 +++ src/file-manager/fm-icon-view.c 22 Jun 2006 20:08:41 -0000 @@ -553,7 +553,8 @@ fm_icon_view_add_file (FMDirectoryView * if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2077,7 +2078,8 @@ fm_icon_view_screen_changed (GtkWidget * } else { if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2527,26 +2529,29 @@ create_icon_container (FMIconView *icon_ /* Handles an URL received from Mozilla */ static void icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void icon_view_handle_uri_list (NautilusIconContainer *container, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void icon_view_handle_text (NautilusIconContainer *container, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static char * Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.270 diff -u -p -r1.270 fm-list-view.c --- src/file-manager/fm-list-view.c 24 May 2006 13:20:42 -0000 1.270 +++ src/file-manager/fm-list-view.c 22 Jun 2006 20:08:47 -0000 @@ -1044,26 +1044,28 @@ get_file_for_path_callback (NautilusTree /* Handles an URL received from Mozilla */ static void list_view_handle_url (NautilusTreeViewDragDest *dest, const char *encoded_url, - GdkDragAction action, int x, int y, FMListView *view) + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void list_view_handle_uri_list (NautilusTreeViewDragDest *dest, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void list_view_handle_text (NautilusTreeViewDragDest *dest, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static void --=-wko5hNaIXKFzt/OLy/jx-- From gcgn-nautilus-list@m.gmane.org Fri Jun 23 20:50:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1A1653B016A for ; Fri, 23 Jun 2006 20:50:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14245-10 for ; Fri, 23 Jun 2006 20:50:09 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id D85B93B00E5 for ; Fri, 23 Jun 2006 20:50:08 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FtwLa-00040A-JD for nautilus-list@gnome.org; Sat, 24 Jun 2006 02:50:02 +0200 Received: from grenadine.bebeloup.net ([82.66.18.21]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 Received: from bdelaage by grenadine.bebeloup.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Boris de Laage Subject: [PATCH] nautilus-vcs: use the C locale for LC_TIME with strftime Date: Sat, 24 Jun 2006 02:46:54 +0200 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: grenadine.bebeloup.net User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.145 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_SORBS_WEB=1.456, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -1.145 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 00:50:10 -0000 strftime formats the string according to the current locale, while CVS timestamps are in english. This patch changes the LC_TIME locale before calling strftime. Boris. Index: nautilus-cvs.c =================================================================== RCS file: /cvs/gnome/nautilus-vcs/src/nautilus-cvs.c,v retrieving revision 1.8 diff -u -r1.8 nautilus-cvs.c --- nautilus-cvs.c 19 Nov 2004 18:18:19 -0000 1.8 +++ nautilus-cvs.c 6 Dec 2005 16:29:12 -0000 @@ -128,8 +128,11 @@ struct tm mtime; const GnomeVFSFileInfo *info; char timestamp[512]; + char *locale; + info = nautilus_file_info_get_vfs_file_info (file); + locale = setlocale(LC_TIME, "C"); gmtime_r (&info->mtime, &mtime); if (strftime (timestamp, 512, "%a %b %e %H:%M:%S %Y", @@ -138,6 +141,7 @@ ret = TRUE; } } + setlocale(LC_TIME, locale); } return ret; From alexgearhart@gmail.com Sat Jun 24 02:03:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C39E83B01BF for ; Sat, 24 Jun 2006 02:03:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26437-02 for ; Sat, 24 Jun 2006 02:03:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by menubar.gnome.org (Postfix) with ESMTP id 7481E3B0303 for ; Sat, 24 Jun 2006 02:03:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so156334uge for ; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.140.17 with SMTP id n17mr1525570hud; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.31.6 with HTTP; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Message-ID: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Date: Sat, 24 Jun 2006 02:03:15 -0400 From: "Alex Gearhart" To: nautilus-list@gnome.org Subject: Folder size column MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_33481_11872762.1151128995549" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.91 tagged_above=-999 required=2 tests=[BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -0.91 X-Spam-Level: X-Mailman-Approved-At: Sat, 24 Jun 2006 10:45:26 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 06:03:19 -0000 ------=_Part_33481_11872762.1151128995549 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hey, the folder size column should display the size of the folder, and not how many files are inside. Then it would be easier to see how much space all your folders take up. Instead, the number of files inside should be in a column like "Contents." Thanks, Alex ------=_Part_33481_11872762.1151128995549 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hey, the folder size column should display the size of the folder, and not how many files are inside.   Then it would be easier to see how much space all your folders take up.  Instead, the number of files inside should be in a column like "Contents."

 

Thanks,
Alex

------=_Part_33481_11872762.1151128995549-- From gcgn-nautilus-list@m.gmane.org Sat Jun 24 13:15:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id EA1233B0385 for ; Sat, 24 Jun 2006 13:15:45 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26732-06 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 6D41A3B0121 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FuBio-0007D2-A1 for nautilus-list@gnome.org; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: support truncated long file name? Date: Sat, 24 Jun 2006 18:08:39 +0100 Lines: 30 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:pg4guGpKutI95x3CB8skWP4y+YE= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:15:46 -0000 Dear all, A missing feature in nautilus is truncated long file name. Imagine opening a dir with a lot of long file names such as a dir containing papers that have title as the file name, which a lot academic workers will do. How messy and inconvenient that is! Lately a colleague, a first-time gnome user, has asked for help to configure his nautilus to show tidily a dir of books that he collected. Unfortunately no one could give an answer. He has then been persuaded to change to KDE. As a gnome user for 4 years, I hate to see people leave gnome this way and thus this post. In case you can't try konqueror or xp explorer, here is the feature: In konqueror or xp explorer, long file name will be truncated with ... to indicate the missing part. A popup will show the full file name when mouse is over the item. (Konqueror has this feature for over 2 years) Files in the desktop are treated differently. Full file name is shown for selected item. This feature is available in xp. Apology for my English. Thanks for your time. -- Leon From mpt@myrealbox.com Sat Jun 24 21:32:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 854743B024B for ; Sat, 24 Jun 2006 21:32:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11780-10 for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from leucothea.redline.site5.com (leucothea.redline.site5.com [216.118.97.161]) by menubar.gnome.org (Postfix) with ESMTP id 7AD453B01DD for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from 203-173-178-53.bliink.ihug.co.nz ([203.173.178.53] helo=[10.1.1.5]) by leucothea.redline.site5.com with esmtpsa (TLSv1:RC4-SHA:128) (Exim 4.52) id 1FuJSn-0001jv-Pt; Sat, 24 Jun 2006 21:31:02 -0400 In-Reply-To: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> References: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <1e87f7c2959ea7bc5dbc264d3a1d94c0@myrealbox.com> Content-Transfer-Encoding: quoted-printable From: Matthew Paul Thomas Subject: Re: Folder size column Date: Sun, 25 Jun 2006 13:31:05 +1200 To: nautilus-list List X-Mailer: Apple Mail (2.623) X-Antivirus-Scanner: This message has been scanned by ClamAV. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leucothea.redline.site5.com X-AntiAbuse: Original Domain - gnome.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - myrealbox.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=0.123, BAYES_00=-2.599] X-Spam-Score: -2.476 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 01:32:02 -0000 On Jun 24, 2006, at 6:03 PM, Alex Gearhart wrote: > > Hey, the folder size column should display the size of the folder, and=20= > not how many files are inside. =A0 Then it would be easier to see how=20= > much space all your folders take up.=A0 Instead, the number of files=20= > inside should be in a column like "Contents." > ... You can subscribe to the relevant bug report to be notified of progress=20= in fixing the bug. Cheers --=20 Matthew Paul Thomas http://mpt.net.nz/= From reinouts@gnome.org Sun Jun 25 04:59:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 45E3C3B02C9 for ; Sun, 25 Jun 2006 04:59:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06259-07 for ; Sun, 25 Jun 2006 04:59:28 -0400 (EDT) Received: from smtp13.wxs.nl (smtp13.wxs.nl [195.121.247.4]) by menubar.gnome.org (Postfix) with ESMTP id E0E423B01C5 for ; Sun, 25 Jun 2006 04:59:27 -0400 (EDT) Received: from reinout.rotterdam-cs.com (ip5656924e.speed.planet.nl [86.86.146.78]) by smtp13.wxs.nl (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with SMTP id <0J1E00KI7RLCUO@smtp13.wxs.nl> for nautilus-list@gnome.org; Sun, 25 Jun 2006 10:58:24 +0200 (CEST) Date: Sun, 25 Jun 2006 11:01:02 +0200 From: Reinout van Schouwen Subject: Re: support truncated long file name? To: nautilus-list@gnome.org Message-id: MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) References: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.449 tagged_above=-999 required=2 tests=[AWL=0.015, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.449 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 08:59:31 -0000 Hi Leon, On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > Lately a colleague, a first-time gnome user, has asked for help to > configure his nautilus to show tidily a dir of books that he collected. How did the long filenames cause "untidiness" then? Was he using list view or icon view? > Unfortunately no one could give an answer. He has then been persuaded to > change to KDE. That sounds like a rigorous solution for a relatively insignificant problem, but at least he is still using Free software :-). > In konqueror or xp explorer, long file name will be truncated with ... > to indicate the missing part. A popup will show the full file name when > mouse is over the item. (Konqueror has this feature for over 2 years) Popup tooltips in the GTK tree/list widget are not possible in the current stable releases, however I think they will be part of the upcoming GTK 2.10. I agree that it would be good to use ellipsis (...) for filenames that do not fit in their column, could you file a bug about this at http://bugzilla.gnome.org/ so that the developers don't forget about it? regards, -- Reinout van Schouwen From gcgn-nautilus-list@m.gmane.org Sun Jun 25 07:19:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8717D3B008F for ; Sun, 25 Jun 2006 07:19:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11101-06 for ; Sun, 25 Jun 2006 07:19:24 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 04FB23B00D9 for ; Sun, 25 Jun 2006 07:19:23 -0400 (EDT) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FuSda-0004qq-Et for nautilus-list@gnome.org; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: Re: support truncated long file name? Date: Sun, 25 Jun 2006 12:18:35 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:M1ThUfhXtUcoA+syhkILCbb1hws= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 11:19:27 -0000 Reinout van Schouwen writes: > Hi Leon, > > On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > >> Lately a colleague, a first-time gnome user, has asked for help to >> configure his nautilus to show tidily a dir of books that he collected. > > How did the long filenames cause "untidiness" then? Was he using list view > or icon view? > Icon view. Sometimes list view is not an option for example on the desktop. > >> In konqueror or xp explorer, long file name will be truncated with ... >> to indicate the missing part. A popup will show the full file name when >> mouse is over the item. (Konqueror has this feature for over 2 years) > > Popup tooltips in the GTK tree/list widget are not possible in the current > stable releases, however I think they will be part of the upcoming GTK > 2.10. I agree that it would be good to use ellipsis (...) for filenames > that do not fit in their column, could you file a bug about this at > http://bugzilla.gnome.org/ so that the developers don't forget about it? Funny story, this bug has been filed slightly more than 4 years ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 Can somebody raise the priority of the bug? As a DE values usability and simplicity this much as gnome, it will be a shame to see this bug hang around for another 4 year. > > regards, > > -- > Reinout van Schouwen -- Leon From ebassi@gmail.com Mon Jun 26 06:28:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11F873B03A8 for ; Mon, 26 Jun 2006 06:28:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09876-02 for ; Mon, 26 Jun 2006 06:28:36 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.170]) by menubar.gnome.org (Postfix) with ESMTP id 6146C3B030F for ; Mon, 26 Jun 2006 06:28:35 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so760879uge for ; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: by 10.67.26.7 with SMTP id d7mr4811743ugj; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: from ?10.0.10.50? ( [147.83.156.10]) by mx.gmail.com with ESMTP id k2sm4822536ugf.2006.06.26.03.28.30; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Subject: Re: support truncated long file name? From: Emmanuele Bassi To: Leon In-Reply-To: References: Content-Type: text/plain Date: Mon, 26 Jun 2006 11:28:29 +0100 Message-Id: <1151317709.6877.2.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.4 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, SPF_PASS=-0.001] X-Spam-Score: -2.4 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 10:28:39 -0000 Hi; On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: > > Popup tooltips in the GTK tree/list widget are not possible in the current > > stable releases, however I think they will be part of the upcoming GTK > > 2.10. Unfortunately, no. They didn't make in time for the 2.10 schedule. > I agree that it would be good to use ellipsis (...) for filenames > > that do not fit in their column, could you file a bug about this at > > http://bugzilla.gnome.org/ so that the developers don't forget about it? > > Funny story, this bug has been filed slightly more than 4 years > ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 > > Can somebody raise the priority of the bug? The GTK developers are pretty well aware of the situation. Unfortunately, providing support for tooltips inside GtkTreeView is a tricky thing to do, and requires a major overhauling of the tooltips API. This means introducing a major change in every application using tooltips, so we need to do things right. > As a DE values usability > and simplicity this much as gnome, it will be a shame to see this bug > hang around for another 4 year. Faster work implies giving a hand with code. If you want, you can contact Kristian, which is working on this issue, and help him by writing some code yourself. Ciao, Emmanuele. -- Emmanuele Bassi, E: ebassi@gmail.com W: http://www.emmanuelebassi.net B: http://log.emmanuelebassi.net From milton.yates@resel.fr Mon Jun 26 11:20:22 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 656393B045D for ; Mon, 26 Jun 2006 11:20:22 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27783-06 for ; Mon, 26 Jun 2006 11:20:20 -0400 (EDT) Received: from smtp2-g19.free.fr (smtp2-g19.free.fr [212.27.42.28]) by menubar.gnome.org (Postfix) with ESMTP id E856A3B0135 for ; Mon, 26 Jun 2006 11:20:19 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp2-g19.free.fr (Postfix) with ESMTP id B299273276 for ; Mon, 26 Jun 2006 17:20:18 +0200 (CEST) Subject: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org Content-Type: text/plain Date: Mon, 26 Jun 2006 17:20:18 +0200 Message-Id: <1151335218.3123.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 15:20:22 -0000 Hi, I'm often coming across the following dialog box: "Cannot XXX. The filename "XXX" indicates that this file is of type "YYY". The contents of the file indicate that the file is of type "ZZZ". If you open this file, the file might present a security risk to your system." Often on WMV files, it says it's ASF, but it's not. Knowing that file content detection might fail, I'd like to know if there is any way to prevent Nautilus from actually doing this detection. The user should be able to deactivate it, as I can get quite annoying. Is that possible ? Thanks, Milton. From nshmyrev@yandex.ru Tue Jun 27 04:14:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 250FE3B0204 for ; Tue, 27 Jun 2006 04:14:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15482-05 for ; Tue, 27 Jun 2006 04:14:13 -0400 (EDT) Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18]) by menubar.gnome.org (Postfix) with ESMTP id 106663B02D1 for ; Tue, 27 Jun 2006 04:14:12 -0400 (EDT) Received: from ppp83-237-255-208.pppoe.mtu-net.ru ([83.237.255.208]:38893 "EHLO gnome.local" smtp-auth: "nshmyrev" TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3376165AbWF0IOK (ORCPT ); Tue, 27 Jun 2006 12:14:10 +0400 X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: nshmyrev Subject: Re: Nautilus and file format detection... From: "Nickolay V. Shmyrev" To: Milton YATES In-Reply-To: <1151335218.3123.16.camel@localhost> References: <1151335218.3123.16.camel@localhost> Content-Type: text/plain; charset=utf-8 Date: Tue, 27 Jun 2006 12:14:13 +0400 Message-Id: <1151396053.11042.5.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.315 tagged_above=-999 required=2 tests=[AWL=0.150, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_PASS=-0.001] X-Spam-Score: -2.315 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 08:14:28 -0000 Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > Hi, > > I'm often coming across the following dialog box: > "Cannot XXX. > The filename "XXX" indicates that this file is of > type "YYY". The contents of the file indicate > that the file is of type "ZZZ". If you open this file, > the file might present a security risk to your system." > > Often on WMV files, it says it's ASF, but it's not. > > Knowing that file content detection might fail, I'd like to know > if there is any way to prevent Nautilus from actually doing this detection. > The user should be able to deactivate it, as I can get quite annoying. > Is that possible ? > As far as I know there is no way to disable dialog detection, but the problem with this known "dialog of doom" was solved long time ago. Probably, upgrade will help you with your problems. From milton.yates@resel.fr Tue Jun 27 13:47:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8740F3B01EE for ; Tue, 27 Jun 2006 13:47:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 10834-05 for ; Tue, 27 Jun 2006 13:47:01 -0400 (EDT) Received: from smtp6-g19.free.fr (smtp6-g19.free.fr [212.27.42.36]) by menubar.gnome.org (Postfix) with ESMTP id E0B2B3B0163 for ; Tue, 27 Jun 2006 13:47:00 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp6-g19.free.fr (Postfix) with ESMTP id E8A1418719 for ; Tue, 27 Jun 2006 19:46:27 +0200 (CEST) Subject: Re: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org In-Reply-To: <1151396053.11042.5.camel@gnome.local> References: <1151335218.3123.16.camel@localhost> <1151396053.11042.5.camel@gnome.local> Content-Type: text/plain; charset=UTF-8 Date: Tue, 27 Jun 2006 19:46:21 +0200 Message-Id: <1151430381.16816.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 17:47:02 -0000 Le mardi 27 juin 2006 à 12:14 +0400, Nickolay V. Shmyrev a écrit : > Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > > I'm often coming across the following dialog box: > > "Cannot XXX. > > The filename "XXX" indicates that this file is of > > type "YYY". The contents of the file indicate > > that the file is of type "ZZZ". If you open this file, > > the file might present a security risk to your system." > > > > Often on WMV files, it says it's ASF, but it's not. > As far as I know there is no way to disable dialog detection, but the > problem with this known "dialog of doom" was solved long time ago. > Probably, upgrade will help you with your problems. I use nautilus 2.12.2 in a gnome 2.12.3. This almost only happens on WMV files which are detected as ASF. From kristoffer.lunden@gmail.com Tue Jun 27 15:16:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2F2113B02A8 for ; Tue, 27 Jun 2006 15:16:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14131-01 for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: from nz-out-0102.google.com (nz-out-0102.google.com [64.233.162.204]) by menubar.gnome.org (Postfix) with ESMTP id 8C3C63B03AC for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: by nz-out-0102.google.com with SMTP id i1so2361752nzh for ; Tue, 27 Jun 2006 12:16:03 -0700 (PDT) Received: by 10.36.178.19 with SMTP id a19mr1156199nzf; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Received: by 10.36.132.19 with HTTP; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Message-ID: Date: Tue, 27 Jun 2006 21:16:02 +0200 From: "=?UTF-8?Q?Kristoffer_Lund=C3=A9n?=" To: "nautilus-list@gnome.org" Subject: Possible to recognize a dropped ISO into the creator? MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_9323_19651519.1151435762818" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.45 tagged_above=-999 required=2 tests=[AWL=-0.626, BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, HTML_10_20=1.351, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.45 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 19:16:34 -0000 ------=_Part_9323_19651519.1151435762818 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sCgpqdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQgaXQgYWdh aW4uIDopCgpJIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlrZSB0byBidXJuLiBJ IGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwCnBvcHMgYSBxdWVzdGlvbiBpZiBJIHdhbnQgdG8g aWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3IKYnVybmluZyBhbiBJ U08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJlIHByZXNlbnQgdG9v LCBvcgp3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29nbml6ZSB0aGF0IGFu IElTTyBpcyBiZWluZyBkcm9wcGVkCmFuZCBhc2sgaWYgSSB3YW50IHRvIG1ha2UgYW4gSVNPIG9y IGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KCkFwcGFyZW50bHkgTmF1dGlsdXMga25v d3MgaXQncyBhbiBJU086IGFzIGl0IGlzIG5vdywgSSBoYXZlIHRvIGdvIHRvIHRoZQpJU08sIHJp Z2h0LWNsaWNrIGFuZCBjaG9vc2UgdG8gYnVybiBpdCBmcm9tIHRoZXJlLiBJJ2QgcmF0aGVyIGhh dmUgaXQgbW9yZQp1bmlmaWVkLCBhcyB0aGUgcXVlc3Rpb24gaXMgYXNrZWQgYW55d2F5cyB3aGVu IEkgcHV0IHRoZSBDRCBpbi4KCi0tIEtyaXN0b2ZmZXIKCi0tIApLcmlzdG9mZmVyIEx1bmTDqW4K 4pyJIGtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbQrinIkga3Jpc3RvZmZlci5sdW5kZW5AZ2Ft ZW1ha2VyLm51Cmh0dHA6Ly93d3cuZ2FtZW1ha2VyLm51LwrimI4gMDcwNCA0OCA5OCA3Nwo= ------=_Part_9323_19651519.1151435762818 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sPGJyPjxicj5qdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQg aXQgYWdhaW4uIDopPGJyPjxicj5JIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlr ZSB0byBidXJuLiBJIGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwIHBvcHMgYSBxdWVzdGlvbiBp ZiBJIHdhbnQgdG8gaWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3Ig YnVybmluZyBhbiBJU08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJl IHByZXNlbnQgdG9vLCBvciB3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29n bml6ZSB0aGF0IGFuIElTTyBpcyBiZWluZyBkcm9wcGVkIGFuZCBhc2sgaWYgSSB3YW50IHRvIG1h a2UgYW4gSVNPIG9yIGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KPGJyPjxicj5BcHBh cmVudGx5IE5hdXRpbHVzIGtub3dzIGl0J3MgYW4gSVNPOiBhcyBpdCBpcyBub3csIEkgaGF2ZSB0 byBnbyB0byB0aGUgSVNPLCByaWdodC1jbGljayBhbmQgY2hvb3NlIHRvIGJ1cm4gaXQgZnJvbSB0 aGVyZS4gSSdkIHJhdGhlciBoYXZlIGl0IG1vcmUgdW5pZmllZCwgYXMgdGhlIHF1ZXN0aW9uIGlz IGFza2VkIGFueXdheXMgd2hlbiBJIHB1dCB0aGUgQ0QgaW4uPGJyPgo8YnI+LS0gS3Jpc3RvZmZl cjxicj48YnI+LS0gPGJyPktyaXN0b2ZmZXIgTHVuZMOpbjxicj7inIkgPGEgaHJlZj0ibWFpbHRv OmtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbSI+a3Jpc3RvZmZlci5sdW5kZW5AZ21haWwuY29t PC9hPjxicj7inIkgPGEgaHJlZj0ibWFpbHRvOmtyaXN0b2ZmZXIubHVuZGVuQGdhbWVtYWtlci5u dSI+a3Jpc3RvZmZlci5sdW5kZW5AZ2FtZW1ha2VyLm51PC9hPjxicj4KPGEgaHJlZj0iaHR0cDov L3d3dy5nYW1lbWFrZXIubnUvIj5odHRwOi8vd3d3LmdhbWVtYWtlci5udS88L2E+PGJyPuKYjiAw NzA0IDQ4IDk4IDc3PGJyPgo= ------=_Part_9323_19651519.1151435762818-- From sl392@hermes.cam.ac.uk Mon Jun 26 09:23:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 30A753B017B for ; Mon, 26 Jun 2006 09:23:46 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20605-04 for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) Received: from ppsw-9.csi.cam.ac.uk (ppsw-9.csi.cam.ac.uk [131.111.8.139]) by menubar.gnome.org (Postfix) with ESMTP id 231A23B035F for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) X-Cam-SpamDetails: Not scanned X-Cam-AntiVirus: No virus found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]:51862) by ppsw-9.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:587) with esmtpsa (LOGIN:sl392) (TLSv1:DHE-RSA-AES256-SHA:256) id 1Fur3z-0007uC-Uw (Exim 4.54) (return-path ); Mon, 26 Jun 2006 14:23:39 +0100 To: Emmanuele Bassi Subject: Re: support truncated long file name? References: <1151317709.6877.2.camel@localhost> From: Leon Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= Date: Mon, 26 Jun 2006 14:23:38 +0100 In-Reply-To: <1151317709.6877.2.camel@localhost> (Emmanuele Bassi's message of "Mon, 26 Jun 2006 11:28:29 +0100") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Shidai (Leon) Liu X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.593 tagged_above=-999 required=2 tests=[AWL=0.006, BAYES_00=-2.599] X-Spam-Score: -2.593 X-Spam-Level: X-Mailman-Approved-At: Thu, 29 Jun 2006 03:03:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 13:23:46 -0000 Emmanuele Bassi writes: > Hi; > > On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: >> > Popup tooltips in the GTK tree/list widget are not possible in the current >> > stable releases, however I think they will be part of the upcoming GTK >> > 2.10. > > Unfortunately, no. They didn't make in time for the 2.10 schedule. > Can we implement this without using tooltip? For example, we can have the full file name displayed when the file is selected and truncated otherwise. Most of the time, user can recognize the file by the mimetype icon and the beginning few words of the file. >> I agree that it would be good to use ellipsis (...) for filenames >> > that do not fit in their column, could you file a bug about this at >> > http://bugzilla.gnome.org/ so that the developers don't forget about it? >> >> Funny story, this bug has been filed slightly more than 4 years >> ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 >> >> Can somebody raise the priority of the bug? > > The GTK developers are pretty well aware of the situation. > Unfortunately, providing support for tooltips inside GtkTreeView is a > tricky thing to do, and requires a major overhauling of the tooltips > API. This means introducing a major change in every application using > tooltips, so we need to do things right. Now I see it is fundamentally difficult to implement the tooptip methods:) > >> As a DE values usability >> and simplicity this much as gnome, it will be a shame to see this bug >> hang around for another 4 year. > > Faster work implies giving a hand with code. If you want, you can > contact Kristian, which is working on this issue, and help him by > writing some code yourself. > > Ciao, > Emmanuele. Thanks Emmanuele. Unfortunately, I'm not trained in programming. Implementing this without tooltip seems feasible. -- Leon From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request. See you. -- Manuel Clos, llanero@jazzfree.com use what's best for you. Don't use what you feel you "have" to. From james@pharaohsystems.com Fri Jun 2 05:47:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2368D3B02C0 for ; Fri, 2 Jun 2006 05:47:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15548-06 for ; Fri, 2 Jun 2006 05:47:36 -0400 (EDT) Received: from lan.apnuk.com (lan.apnuk.com [212.50.185.139]) by menubar.gnome.org (Postfix) with SMTP id 5004E3B10A9 for ; Fri, 2 Jun 2006 05:47:35 -0400 (EDT) Received: (qmail 26337 invoked from network); 2 Jun 2006 09:47:32 -0000 Received: from unknown (HELO apollo.leeds.apnuk.com) (10.5.30.2) by vulpine.leeds.apnuk.com with SMTP; 2 Jun 2006 09:47:32 -0000 From: James Pharaoh To: nautilus-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-07kukkHUo3K+dfnSUGad" Date: Fri, 02 Jun 2006 10:49:00 +0100 Message-Id: <1149241741.11467.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 02 Jun 2006 13:45:59 -0400 Subject: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 09:47:38 -0000 --=-07kukkHUo3K+dfnSUGad Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I like being able to give folders icons in Nautilus but the "metadata" method is not much use because it is difficult to copy with the folder if I don't use Nautilus to copy it. I'd like to be able to stick a file, say ".nautilus-folder-icon" in the directory to set a default icon, obviously this would be overridden by any metadata icon set. In fact, the name of the file could be set in gconf and this could turn the option on. I assume this wouldn't be too hard to do, I'd like to have a go myself but would appreciate a few hints from someone who knows where to look in the code. Thanks, James --=-07kukkHUo3K+dfnSUGad Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEgAmMOov9Pl/is1ERAjYHAKCHw/iPWN55VZBzbRSsif0Q5YQOeQCfRp1k ttjF+6rSt545Z6oKNuRada0= =ftMn -----END PGP SIGNATURE----- --=-07kukkHUo3K+dfnSUGad-- From patrick.jacquotf@free.fr Fri Jun 2 13:59:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AB21E3B0170 for ; Fri, 2 Jun 2006 13:59:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12964-10 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 759E43B0176 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 5E8A647E61; Fri, 2 Jun 2006 19:59:08 +0200 (CEST) From: Patrick Jacquot To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jun 2006 19:58:55 +0200 Message-Id: <1149271136.8687.44.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.011, BAYES_00=-2.599] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 17:59:13 -0000 Le vendredi 02 juin 2006 à 10:49 +0100, James Pharaoh a écrit : > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. > > Thanks, > > James Maybe adding emblems to the folder icons could achieve what you want. Those emblems superimpose themselves over the folder icon, you can have a folder with a yellow star superimposed, another one with a rocket superimposed and so on. I devised a small utility to be able to add such emblems to a directory icon (or a file icon) from the command line (or from a script) See the chemb project on sourceforge -- Patrick From sacha@forty2.be Fri Jun 2 15:05:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 50A4B3B0E50 for ; Fri, 2 Jun 2006 15:05:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17528-06 for ; Fri, 2 Jun 2006 15:05:55 -0400 (EDT) Received: from adicia.telenet-ops.be (adicia.telenet-ops.be [195.130.132.56]) by menubar.gnome.org (Postfix) with ESMTP id 955E03B0A09 for ; Fri, 2 Jun 2006 15:05:47 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by adicia.telenet-ops.be (Postfix) with SMTP id 3A604705D0 for ; Fri, 2 Jun 2006 21:05:46 +0200 (CEST) Received: from romulus.local (dD5E02B5C.access.telenet.be [213.224.43.92]) by adicia.telenet-ops.be (Postfix) with ESMTP id F3AA0705F6 for ; Fri, 2 Jun 2006 21:05:45 +0200 (CEST) From: Sacha Vandenbroeck To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 02 Jun 2006 21:05:50 +0100 Message-Id: <1149278750.14015.9.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Dropline GNOME Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.395 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.395 X-Spam-Level: X-Mailman-Approved-At: Sat, 03 Jun 2006 08:07:21 -0400 Subject: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 19:05:56 -0000 I posted a Nautilus bug, but now ofcourse the developers need a backtrace of this crash. But how do I do this? I have to compile nautilus myself so I tried to do this with the "--enable-debug" option and then tried to get a backtrace with gdb (following the instructions at this link https://wiki.ubuntu.com/Backtrace ) but I still can't get a full backtrace. I don't get the "no debugging symbols found" messages, but still the backtrace is as useless as before. So how do I build nautilus to debug it? I'm sorry if this sounds silly, but I never tried this before and there is almost no information in human language on this topic (I'm not a developer myself but still I want to help make Gnome better). From seb128@debian.org Sat Jun 3 08:52:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDCC33B05AB for ; Sat, 3 Jun 2006 08:52:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03672-09 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from smtp7.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.24]) by menubar.gnome.org (Postfix) with ESMTP id 8BBB13B05D6 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from [192.168.0.2] (ANancy-151-1-75-89.w81-50.abo.wanadoo.fr [81.50.153.89]) by mwinf0706.orange.fr (SMTP Server) with ESMTP id 068A41C0008D for ; Sat, 3 Jun 2006 14:52:36 +0200 (CEST) X-ME-UUID: 20060603125237268.068A41C0008D@mwinf0706.orange.fr From: Sebastien Bacher To: nautilus-list@gnome.org In-Reply-To: <1149278750.14015.9.camel@localhost> References: <1149278750.14015.9.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15 Date: Sat, 03 Jun 2006 14:52:31 +0200 Message-Id: <1149339151.5915.0.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.526 tagged_above=-999 required=2 tests=[AWL=0.073, BAYES_00=-2.599] X-Spam-Score: -2.526 X-Spam-Level: Subject: Re: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 12:52:41 -0000 Le vendredi 02 juin 2006 à 21:05 +0100, Sacha Vandenbroeck a écrit : > I posted a Nautilus bug, but now ofcourse the developers need a > backtrace of this crash. But how do I do this? I have to compile > nautilus myself Hi, No need to build a debug package, just "apt-get install nautilus-dbg" Cheers, Sebastien Bacher From mark.kegel@gmail.com Sat Jun 3 12:08:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 7138E3B0702 for ; Sat, 3 Jun 2006 12:08:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14511-09 for ; Sat, 3 Jun 2006 12:08:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by menubar.gnome.org (Postfix) with ESMTP id 144503B05AE for ; Sat, 3 Jun 2006 12:08:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so815420uge for ; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=W3JRAemVm7OT3HZt2c9RWshzsIBh1m2jBCk+XhCdQhCGtf2oEFpImrEbBnTXY1DChmA46aVlKGGeltQrmOjjppin/uUnWUn1wFkAfVdppvvGeJ1suY0q6OhYugz4aF93JKNrMlbKo2m1+WD50q1Q+pc2WLm4FHQNnkoCAPnIwGs= Received: by 10.67.97.7 with SMTP id z7mr1786225ugl; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) Received: by 10.66.254.18 with HTTP; Sat, 3 Jun 2006 09:08:16 -0700 (PDT) Message-ID: <8a5993840606030908n9df00b8k8cdfb555b95c3dbe@mail.gmail.com> Date: Sat, 3 Jun 2006 10:08:16 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.042 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_BL_SPAMCOP_NET=1.558, SPF_PASS=-0.001] X-Spam-Score: -1.042 X-Spam-Level: X-Mailman-Approved-At: Sun, 04 Jun 2006 08:36:32 -0400 Subject: volumes not showing in nautilus X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 16:08:18 -0000 I've been running gnome 2.14 for about two weeks now and am very pleased with it. Unfortunately, nautilus isn't showing the partitions I have mounted, as it did in 2.12. I've set the appropriate settings with gconf (at least I think I have) with no luck. Anyone have any ideas or pointers to a solution? Mark Kegel From xclaesse@gmail.com Mon Jun 5 05:57:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 994D93B031D; Mon, 5 Jun 2006 05:57:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20358-05; Mon, 5 Jun 2006 05:56:59 -0400 (EDT) Received: from outmx026.isp.belgacom.be (outmx026.isp.belgacom.be [195.238.4.91]) by menubar.gnome.org (Postfix) with ESMTP id 5AEF03B00CE; Mon, 5 Jun 2006 05:56:58 -0400 (EDT) Received: from outmx026.isp.belgacom.be (localhost [127.0.0.1]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559upxm015348; Mon, 5 Jun 2006 11:56:51 +0200 (envelope-from ) Received: from [10.0.0.3] (244-16.241.81.adsl.skynet.be [81.241.16.244]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559ulet015294; Mon, 5 Jun 2006 11:56:48 +0200 (envelope-from ) From: Xavier Claessens To: Christian Neumair In-Reply-To: <1147197585.5045.11.camel@localhost> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-nAeSl/tN81bv5MmP9h9B" Date: Mon, 05 Jun 2006 11:56:49 +0200 Message-Id: <1149501410.7231.27.camel@zdra-desktop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.999 tagged_above=-999 required=2 tests=[AWL=-0.469, BAYES_00=-2.599, SPF_NEUTRAL=1.069] X-Spam-Score: -1.999 X-Spam-Level: Cc: Mark McLoughlin , Vincent Untz , "nautilus-list@gnome.org" Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 09:57:01 -0000 --=-nAeSl/tN81bv5MmP9h9B Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Le mardi 09 mai 2006 =C3=A0 19:59 +0200, Xavier Claessens a =C3=A9crit : > Le mardi 09 mai 2006 =C3=A0 18:59 +0200, Christian Neumair a =C3=A9crit : > > Am Dienstag, den 09.05.2006, 10:25 +0200 schrieb Xavier Claessens: > > > Le mardi 09 mai 2006 =C3=A0 10:01 +0200, Christian Neumair a =C3=A9cr= it : > > > > > For volume icons from the desktop, is it possible to make it work= like > > > > > in computer:/// ? nautilus should generate on-the-fly same .drive= files. > > > > > Like that we are sure that at least icons from desktop and from > > > > > computer:/// react the same way. > > > >=20 > > > > Passing around on-the-fly generated files (which would have to be p= ut > > > > into file:///tmp) isn't a good idea IMHO, because it requires sniff= ing > > > > foreach passed-in URI. My proposal tried to address the fact that s= ome > > > > applications are interested in volumes or drives but not in their > > > > corresponding files, since the actual volume/drive data can be quer= ied > > > > from the volume monitor. > > >=20 > > > Ok. So computer:/// should works like x-nautilus-desktop:/// and > > > nautilus should never use the on-the-fly generated .drive files. Like > > > that most problems are solved because icons from desktop aren't accep= ted > > > for dropping anywhere. > >=20 > > No, it doesn't solve the problem, because - as you pointed out - not > > doing anything isn't really user-friendly either. IMHO it would be the > > best to operate on the drive's activation URI when dropping a volume or > > drive file to another folder. >=20 > As I understand we have currently 2 representations possible for a > drive/volume icon in nautilus. One for computer:/// and another for > x-nautilus-desktop:///. So I think the first step is to have only one > representation. We should only use the first or the second or maybe > another system which will replace the two. >=20 > So my question is: we should use computer:/// representation for > x-nautilus-desktop:/// ? Or the reverse ? or something else ? >=20 > When we have one single representation we should patch other > applications (including gnome-panel and nautilus itself) to accept in > one way or another DnD of this representation. >=20 > Xavier Claessens. >=20 So what can we do now for GNOME 2.15 ? I think nautilus should really have a common way handling drives/volumes files. Here is an example of *really* bad design: zdra@zdra-desktop:~/programmation/gnome/nautilus$ grep -r "eject_for_type (GnomeVFSDeviceType type)" * libnautilus-private/nautilus-desktop-link-monitor.c:eject_for_type (GnomeVFSDeviceType type) src/nautilus-places-sidebar.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-directory-view.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-tree-view.c:eject_for_type (GnomeVFSDeviceType type) Yes this basic function is defined 4 times in different files ! There is also functions like the one which says if an GnomeVFSDrive should have a "eject", "unmount", "format",etc popup menu option which is copy/pasted everywhere in nautilus. So what I propose is adding some objects to libnautilus-private to have a common way handling Drive and Volume files. In the same way of nautilus_destkop_* we can make something like nautilus_volume_file and nautilus_drive_file which would be used to computer:///, x-nautilus-desktop:///,etc. On this objects we can have methods like gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); to replace the eject_for_type(). And void nautilus_volume_file_get_options (NautilusDriveFile*, gboolean *show_mount, gboolean *show_unmount, gboolean *show_eject, gboolean *show_format); To know which options we can show for this file. I don't know exactly how all that can work and if that's a good idea but I can work on it this summer. I'll experiment some patches as soon as my exams finishes. I would be happy to have comments on this. Xavier Claessens. --=-nAeSl/tN81bv5MmP9h9B Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEg//h6dEBUn2qPAMRAtmXAKCB3U3DFjVEGjbAazBKl7zNZwTUFQCgjxxd +HMH0MmP9vv41UqLjYgldaE= =BuCn -----END PGP SIGNATURE----- --=-nAeSl/tN81bv5MmP9h9B-- From jamesat@comcast.net Wed Jun 7 07:38:09 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 70A7B3B0C14 for ; Wed, 7 Jun 2006 07:38:09 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07291-05 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [63.240.77.85]) by menubar.gnome.org (Postfix) with ESMTP id 61B153B0C89 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from [10.10.10.51] (c-66-31-77-146.hsd1.nh.comcast.net[66.31.77.146]) by comcast.net (sccrmhc15) with SMTP id <2006060711380501500ch6mte>; Wed, 7 Jun 2006 11:38:05 +0000 From: James Tremblay To: nautilus-list@gnome.org Content-Type: text/plain Date: Wed, 07 Jun 2006 07:37:40 -0400 Message-Id: <1149680260.8506.2.camel@sled10.liberty> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: Yes, score=2.415 tagged_above=-999 required=2 tests=[BAYES_20=-0.74, DNS_FROM_RFC_POST=1.708, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: 2.415 X-Spam-Level: ** X-Spam-Flag: YES Subject: connectivity issues X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 11:38:09 -0000 is there any plan to integrate standards based slp services to Nautilus. this is a ridiculous question to ask of a modern network browser but i'm asking cuz it's needed! From sivan@ubuntu.com Wed Jun 7 14:39:47 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 663863B0546 for ; Wed, 7 Jun 2006 14:39:47 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05495-10 for ; Wed, 7 Jun 2006 14:39:44 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id BF82C3B069F for ; Wed, 7 Jun 2006 14:39:43 -0400 (EDT) Received: from bzq-84-108-224-57.cablep.bezeqint.net (bzq-84-108-224-57.cablep.bezeqint.net [84.108.224.57]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BC32D44DD for ; Wed, 7 Jun 2006 20:39:36 +0200 (CEST) From: Sivan Greenberg To: nautilus-list@gnome.org In-Reply-To: <1149074455.5848.7.camel@localhost> References: <1149074455.5848.7.camel@localhost> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 07 Jun 2006 21:39:32 +0300 Message-Id: <1149705572.8926.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.369 tagged_above=-999 required=2 tests=[AWL=0.095, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.369 X-Spam-Level: Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 18:39:47 -0000 Hi Again, the wonderful users and hacker of nautilus. I would like to bring your attention again to a patch I have created originally using pure gnome_vfs functions to check if the source's parent is read only, and if so default to a copy operation instead of a move operation which previously caused hassle, confusing and much mess among especially converts from other operating system, as to why "Such a trivial operation needs to involve hassle and why do I even need to think about it and select copy from the context menu??" etc.. ;-) So after realizing this patch is not good enough, due to it being inside a callback which gets called multiple times per each DND operation, Manny on the irc channel proposed I use instead of the native gnome-vfs methods, the nautilus infras. for file manipulation (to check if the source uri's parent is read only) , namely libnautilus-private/nautilus-file.h::nautilus_file_get_existing and libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info Now my question is, should I get a new patch in the same a approach of the previous one (which actually followed another patch approach, from the file ownership bug) but with the this time cache enabled functions of nautilus-file.h, will this be accepted by the upstream maintainers? I would hate to start work on it, just to realize I need to re-do it again. Many thanks, and apologies for the spam :) Sivan On Wed, 2006-05-31 at 14:20 +0300, Sivan Green wrote: > Hi List! > > As I have been experiencing this bug for quite some time long, and been > bitched my converts that this is such a minimal thing for an "OS" to > know to do, I have decided to write a patch for it myself. > > My patch basically adds another check before deciding on a "move" > operation, in a similar way to what [1] is already doing, and as such, > [1] must be applied before [2] can be applied to achieve the fix. > > This is already scheduled for dapper-updates, but I would love to see it > fixed upstream as well, for benefit of other distros who have reported > this issue. (has also bee spotted in Fedora) > > Many Thanks! > > Cheers, > > Sivan > > [1]: http://bugzilla.gnome.org/attachment.cgi?id=63939&action=view > [2]: http://bugzilla.gnome.org/attachment.cgi?id=66519 From promac@gmail.com Thu Jun 8 22:12:37 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 00AED3B0108 for ; Thu, 8 Jun 2006 22:12:37 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20139-03 for ; Thu, 8 Jun 2006 22:12:36 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.200]) by menubar.gnome.org (Postfix) with ESMTP id 3902E3B0118 for ; Thu, 8 Jun 2006 22:12:35 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so556444wxd for ; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k8WPqufouETdhytWFOCSGqDBX6Uww6u/gx9GEiZfqGDansyu/0GfgVJyWff6v5Bes6Maf8ZS2LgMrkJjT8mpXVazDoz6ic2fs6ad7faacc72ctSOSMCMi0jOeU6u9dS8t246PH01NSDAEkqr+nztxZGQI1j/y8aqMs+P7Y/+/5Y= Received: by 10.70.36.1 with SMTP id j1mr2903510wxj; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Thu, 8 Jun 2006 19:12:34 -0700 (PDT) Message-ID: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Date: Thu, 8 Jun 2006 23:12:34 -0300 From: "Paulo Cavalcanti" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19117_24627930.1149819154508" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.588 tagged_above=-999 required=2 tests=[AWL=-0.340, BAYES_00=-2.599, HTML_10_20=1.351, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -1.588 X-Spam-Level: Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 02:12:37 -0000 ------=_Part_19117_24627930.1149819154508 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. ------=_Part_19117_24627930.1149819154508 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi,

I am having a problem with nautilus 2.10 from fedora 4.
Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When
I try to close the gnome session it hangs and I have to kill  X.

Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed.

Any suggestion would be greatly appriciated.

Thanks,

/Paulo Roma. ------=_Part_19117_24627930.1149819154508-- From nshmyrev@yandex.ru Fri Jun 9 01:48:25 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 740903B009A for ; Fri, 9 Jun 2006 01:48:25 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30793-01 for ; Fri, 9 Jun 2006 01:48:24 -0400 (EDT) Received: from tzec.mtu.ru (tzec.mtu.ru [195.34.34.228]) by menubar.gnome.org (Postfix) with ESMTP id DF3BF3B0014 for ; Fri, 9 Jun 2006 01:48:21 -0400 (EDT) Received: from gnome.local (ppp83-237-205-132.pppoe.mtu-net.ru [83.237.205.132]) by smtp.MTU.RU (Postfix) with ESMTP id 453E4488309; Fri, 9 Jun 2006 09:48:19 +0400 (MSD) (envelope-from nshmyrev@yandex.ru) From: "Nickolay V. Shmyrev" To: Paulo Cavalcanti In-Reply-To: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Date: Fri, 09 Jun 2006 09:48:27 +0400 Message-Id: <1149832107.2245.28.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.797 tagged_above=-999 required=2 tests=[AWL=-0.402, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.797 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 05:48:25 -0000 Ð’ Чтв, 08/06/2006 в 23:12 -0300, Paulo Cavalcanti пишет: > Hi, > > I am having a problem with nautilus 2.10 from fedora 4. > Since yesterday, it does not put any icon on the desktop, although it > is running. It is also using more than 95% of the CPU. When > I try to close the gnome session it hangs and I have to kill X. > > Everything else seems to be normal. I can login in kde with no problem > at all. I rebooted the computer many times and nothing has changed. > > Any suggestion would be greatly appriciated. > Without additional information it's hard to say what is going on. First of all, check xsession-error in /tmp if something is dumped to error log. Then try to run nautilus or gnome-session under strace and find the place where it hangs. You can try to debug it: with gdb you should login from console, attach to the nautilus with gdb --pid= and collect backtrace with "thread apply all bt" command. You need to install debug packages installed. From promac@gmail.com Fri Jun 9 05:58:16 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F0973B01CA for ; Fri, 9 Jun 2006 05:58:16 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13186-06 for ; Fri, 9 Jun 2006 05:58:15 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.192]) by menubar.gnome.org (Postfix) with ESMTP id B48E83B0770 for ; Fri, 9 Jun 2006 05:58:14 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so608500wxd for ; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mSed73zFvOJhdPHW9Yif+JRsWWePYb71KV3h3JbLoqieOWg+6Yppc95cWmUhw/d6gYdkEbxdgjXfPvh2Whim2HdNbRldY66mxmxKSYjrhQxGDzH6CThqyjhX0xhsPIHyr0JHiMJ7sCuR3o9gOYX55imhIyCq5ToVEXUKVKMdroE= Received: by 10.70.100.17 with SMTP id x17mr3293949wxb; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Fri, 9 Jun 2006 02:58:13 -0700 (PDT) Message-ID: <68720af30606090258r5658e239ga508c46495cf877b@mail.gmail.com> Date: Fri, 9 Jun 2006 06:58:14 -0300 From: "Paulo Cavalcanti" To: "Nickolay V. Shmyrev" In-Reply-To: <1149832107.2245.28.camel@gnome.local> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22870_26670651.1149847094006" References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> <1149832107.2245.28.camel@gnome.local> X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.842 tagged_above=-999 required=2 tests=[AWL=0.533, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.842 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 09:58:16 -0000 ------=_Part_22870_26670651.1149847094006 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5CgpJIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dpbmcgYW5k IGZvdW5kIHRoZSBwcm9ibGVtLgpJIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQgd2FzIGNhdXNl ZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZQpJJ3ZlIG1hZGUgaW4gZ3N0cmVhbWVyLTAuMTAu Cgpnc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1w bHVnaW5zLWJhc2UtMC4xMC43LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1kZXZl bC0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG0KZ3N0cmVhbWVyLXRvb2xzLTAuMTAuNi4yLTAu Z3N0LjEuNC5pMzg2LnJwbQpnc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLWRldmVsLTAuMTAuNy4y LTAuZ3N0LjEuNC5pMzg2LnJwbQoKSSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVs ZWFzZSBhbmQgbmF1dGlsdXMgaXMgc3RhcnRpbmcgYWdhaW4uCldoeSB3b3VsZCBuYXV0aWx1cyBk ZXBlbmQgb24gdGhpcyBjcmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3IKcmh5dGhtYm94LTAu OS4gImxkZCAvdXNyL2Jpbi9uYXV0aWx1cyIgZG9lcyBub3Qgc2hvdyBhbnkgZGVwZW5kZW5jeS4K CldoYXQgcGFydCBvZiBnbm9tZSBkb2VzIHVzZSBpdD8KClRoYW5rIHlvdSwgdmVyeSBtdWNoLgoK L1BhdWxvIFJvbWEuCgpPbiA2LzkvMDYsIE5pY2tvbGF5IFYuIFNobXlyZXYgPG5zaG15cmV2QHlh bmRleC5ydT4gd3JvdGU6Cj4KPiD3IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVs byBDYXZhbGNhbnRpINDJ28XUOgo+ID4gSGksCj4gPgo+ID4gSSBhbSBoYXZpbmcgYSBwcm9ibGVt IHdpdGggbmF1dGlsdXMgMi4xMCBmcm9tIGZlZG9yYSA0Lgo+ID4gU2luY2UgeWVzdGVyZGF5LCBp dCBkb2VzIG5vdCBwdXQgYW55IGljb24gb24gdGhlIGRlc2t0b3AsIGFsdGhvdWdoIGl0Cj4gPiBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo+ID4gSSB0cnkgdG8gY2xvc2UgdGhlIGdub21lIHNlc3Npb24gaXQgaGFuZ3MgYW5kIEkgaGF2 ZSB0byBraWxsICBYLgo+ID4KPiA+IEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBiZSBub3JtYWwu IEkgY2FuIGxvZ2luIGluIGtkZSB3aXRoIG5vIHByb2JsZW0KPiA+IGF0IGFsbC4gSSByZWJvb3Rl ZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQgbm90aGluZyBoYXMgY2hhbmdlZC4KPiA+Cj4g PiBBbnkgc3VnZ2VzdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLgo+ID4KPiBXaXRo b3V0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXQncyBoYXJkIHRvIHNheSB3aGF0IGlzIGdvaW5n IG9uLiBGaXJzdAo+IG9mIGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21l dGhpbmcgaXMgZHVtcGVkIHRvIGVycm9yCj4gbG9nLiBUaGVuIHRyeSB0byBydW4gbmF1dGlsdXMg b3IgZ25vbWUtc2Vzc2lvbiB1bmRlciBzdHJhY2UgYW5kIGZpbmQgdGhlCj4gcGxhY2Ugd2hlcmUg aXQgaGFuZ3MuCj4KPiBZb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDoKPgo+IHdpdGggZ2RiIHlvdSBz aG91bGQgbG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGgKPgo+ IGdkYiAtLXBpZD08bmF1dGlsdXNfcGlkPgo+Cj4gYW5kIGNvbGxlY3QgYmFja3RyYWNlIHdpdGgg InRocmVhZCBhcHBseSBhbGwgYnQiIGNvbW1hbmQuIFlvdSBuZWVkIHRvCj4gaW5zdGFsbCBkZWJ1 ZyBwYWNrYWdlcyBpbnN0YWxsZWQuCj4KPgo+Cg== ------=_Part_22870_26670651.1149847094006 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5PGJyPjxicj5JIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dp bmcgYW5kIGZvdW5kIHRoZSBwcm9ibGVtLjxicj5JIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQg d2FzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZTxicj5JJ3ZlIG1hZGUgaW4gZ3N0 cmVhbWVyLTAuMTAuPGJyPjxicj5nc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYu cnBtCjxicj5nc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLTAuMTAuNy4yLTAuZ3N0LjEuNC5pMzg2 LnJwbTxicj5nc3RyZWFtZXIwMTAtZGV2ZWwtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtPGJy PmdzdHJlYW1lci10b29scy0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG08YnI+Z3N0cmVhbWVy MDEwLXBsdWdpbnMtYmFzZS1kZXZlbC0wLjEwLjcuMi0wLmdzdC4xLjQuaTM4Ni5ycG0gPGJyPgo8 YnI+SSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVsZWFzZSBhbmQgbmF1dGlsdXMg aXMgc3RhcnRpbmcgYWdhaW4uPGJyPldoeSB3b3VsZCBuYXV0aWx1cyBkZXBlbmQgb24gdGhpcyBj cmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3I8YnI+cmh5dGhtYm94LTAuOS4gJnF1b3Q7bGRk IC91c3IvYmluL25hdXRpbHVzJnF1b3Q7IGRvZXMgbm90IHNob3cgYW55IGRlcGVuZGVuY3kuCjxi cj48YnI+V2hhdCBwYXJ0IG9mIGdub21lIGRvZXMgdXNlIGl0Pzxicj48YnI+VGhhbmsgeW91LCB2 ZXJ5IG11Y2guPGJyPjxicj4vUGF1bG8gUm9tYS48YnI+PGJyPjxkaXY+PHNwYW4gY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA2LzkvMDYsIDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1lIj5OaWNrb2xh eSBWLiBTaG15cmV2PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm5zaG15cmV2QHlhbmRleC5ydSI+ Cm5zaG15cmV2QHlhbmRleC5ydTwvYT4mZ3Q7IHdyb3RlOjwvc3Bhbj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIw NCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij73 IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVsbyBDYXZhbGNhbnRpINDJ28XUOgo8 YnI+Jmd0OyBIaSw8YnI+Jmd0Ozxicj4mZ3Q7IEkgYW0gaGF2aW5nIGEgcHJvYmxlbSB3aXRoIG5h dXRpbHVzIDIuMTAgZnJvbSBmZWRvcmEgNC48YnI+Jmd0OyBTaW5jZSB5ZXN0ZXJkYXksIGl0IGRv ZXMgbm90IHB1dCBhbnkgaWNvbiBvbiB0aGUgZGVza3RvcCwgYWx0aG91Z2ggaXQ8YnI+Jmd0OyBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo8YnI+Jmd0OyBJIHRyeSB0byBjbG9zZSB0aGUgZ25vbWUgc2Vzc2lvbiBpdCBoYW5ncyBhbmQg SSBoYXZlIHRvIGtpbGwmbmJzcDsmbmJzcDtYLjxicj4mZ3Q7PGJyPiZndDsgRXZlcnl0aGluZyBl bHNlIHNlZW1zIHRvIGJlIG5vcm1hbC4gSSBjYW4gbG9naW4gaW4ga2RlIHdpdGggbm8gcHJvYmxl bTxicj4mZ3Q7IGF0IGFsbC4gSSByZWJvb3RlZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQg bm90aGluZyBoYXMgY2hhbmdlZC4KPGJyPiZndDs8YnI+Jmd0OyBBbnkgc3VnZ2VzdGlvbiB3b3Vs ZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLjxicj4mZ3Q7PGJyPldpdGhvdXQgYWRkaXRpb25hbCBp bmZvcm1hdGlvbiBpdCdzIGhhcmQgdG8gc2F5IHdoYXQgaXMgZ29pbmcgb24uIEZpcnN0PGJyPm9m IGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21ldGhpbmcgaXMgZHVtcGVk IHRvIGVycm9yPGJyPmxvZy4gVGhlbiB0cnkgdG8gcnVuIG5hdXRpbHVzIG9yIGdub21lLXNlc3Np b24gdW5kZXIgc3RyYWNlIGFuZCBmaW5kIHRoZQo8YnI+cGxhY2Ugd2hlcmUgaXQgaGFuZ3MuPGJy Pjxicj5Zb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDo8YnI+PGJyPndpdGggZ2RiIHlvdSBzaG91bGQg bG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGg8YnI+PGJyPmdk YiAtLXBpZD0mbHQ7bmF1dGlsdXNfcGlkJmd0Ozxicj48YnI+YW5kIGNvbGxlY3QgYmFja3RyYWNl IHdpdGggJnF1b3Q7dGhyZWFkIGFwcGx5IGFsbCBidCZxdW90OyBjb21tYW5kLiBZb3UgbmVlZCB0 bwo8YnI+aW5zdGFsbCBkZWJ1ZyBwYWNrYWdlcyBpbnN0YWxsZWQuPGJyPjxicj48YnI+PC9ibG9j a3F1b3RlPjwvZGl2Pjxicj4K ------=_Part_22870_26670651.1149847094006-- From crotalus@superig.com.br Thu Jun 8 21:35:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AD8293B05AC for ; Thu, 8 Jun 2006 21:35:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18364-01 for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: from smtpsig-4.ig.com.br (smtpsig-4.ig.com.br [200.226.132.141]) by menubar.gnome.org (Postfix) with ESMTP id 304553B02FE for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: (qmail 26488 invoked from network); 9 Jun 2006 01:35:15 -0000 Received: from 200216029049.user.veloxzone.com.br (HELO [192.168.254.2]) (Usuario_autenticado:promac@superig.com.br@[200.216.29.49]) (envelope-sender ) by smtpsig-4.ig.com.br (qmail-ldap-1.03) with SMTP for ; 9 Jun 2006 01:35:15 -0000 Message-ID: <4488D055.20009@superig.com.br> Date: Thu, 08 Jun 2006 22:35:17 -0300 From: Paulo Roma Cavalcanti Organization: UFRJ User-Agent: Thunderbird 1.5 (X11/20060119) MIME-Version: 1.0 To: nautilus-list@gnome.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=0.001 tagged_above=-999 required=2 tests=[BAYES_50=0.001] X-Spam-Score: 0.001 X-Spam-Level: X-Mailman-Approved-At: Fri, 09 Jun 2006 06:30:27 -0400 Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: roma@lcg.ufrj.br List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 01:35:23 -0000 Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. From alexl@redhat.com Fri Jun 9 10:23:21 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D9EBB3B010A for ; Fri, 9 Jun 2006 10:23:21 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30603-04 for ; Fri, 9 Jun 2006 10:23:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 219813B0393 for ; Fri, 9 Jun 2006 10:23:15 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5mso001978; Fri, 9 Jun 2006 10:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5miv011931; Fri, 9 Jun 2006 10:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5lwp005947; Fri, 9 Jun 2006 10:05:48 -0400 From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1149103242.8687.38.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1149103242.8687.38.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 09 Jun 2006 16:05:47 +0200 Message-Id: <1149861948.3023.61.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.549 tagged_above=-999 required=2 tests=[AWL=-0.025, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_BF=0.077] X-Spam-Score: -2.549 X-Spam-Level: Cc: Nautilus Subject: Re: nautilus hangs occasionnaly on a right click X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 14:23:22 -0000 On Wed, 2006-05-31 at 21:20 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Got it ! > Maybe it's the second time I send this message, but I don't find it in > my "sent" directory It looks like some sort of thread deadlock. Both the main thread and the thumbnailer thread are blocking on a libc mutex that looks like its in free(). The rest of the threads look normal, except this: Thread 11 (Thread -1213518928 (LWP 2980)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x09d05830 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb7ab11f8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () I dunno what that is. In this backtrace the thumbnailing thread was launching: "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/lf2006-04-21.aud.cafiero.34781.sbeok.flac16/lf2006-04-21audD1t01.ogg' '/tmp/.gnome_thumbnail.ObrcTQ'" to thumbnail some video. Maybe this is related. Could you repeat this whole procedure a bunch of time and send me the results. It might be possible to figure out the common attributes of the multiple backtraces. Its pretty hard to figure things out from this one only. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an otherworldly day-dreaming messiah whom everyone believes is mad. She's a scantily clad goth traffic cop who don't take no shit from nobody. They fight crime! From alexl@redhat.com Mon Jun 12 05:55:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 232653B0078 for ; Mon, 12 Jun 2006 05:55:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-02 for ; Mon, 12 Jun 2006 05:55:25 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937443B008A for ; Mon, 12 Jun 2006 05:55:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sfY0025126; Mon, 12 Jun 2006 05:54:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9satI014479; Mon, 12 Jun 2006 05:54:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sZEB015002; Mon, 12 Jun 2006 05:54:35 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1149705572.8926.8.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:54:35 +0200 Message-Id: <1150106076.3023.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:55:27 -0000 On Wed, 2006-06-07 at 21:39 +0300, Sivan Greenberg wrote: > Hi Again, the wonderful users and hacker of nautilus. > > I would like to bring your attention again to a patch I have created > originally using pure gnome_vfs functions to check if the source's > parent is read only, and if so default to a copy operation instead of a > move operation which previously caused hassle, confusing and much mess > among especially converts from other operating system, as to why "Such a > trivial operation needs to involve hassle and why do I even need to > think about it and select copy from the context menu??" etc.. ;-) > > So after realizing this patch is not good enough, due to it being inside > a callback which gets called multiple times per each DND operation, > Manny on the irc channel proposed I use instead of the native gnome-vfs > methods, the nautilus infras. for file manipulation (to check if the > source uri's parent is read only) , namely > libnautilus-private/nautilus-file.h::nautilus_file_get_existing > > and > > libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info > > Now my question is, should I get a new patch in the same a approach of > the previous one (which actually followed another patch approach, from > the file ownership bug) but with the this time cache enabled functions > of nautilus-file.h, will this be accepted by the upstream maintainers? > > I would hate to start work on it, just to realize I need to re-do it > again. > > Many thanks, and apologies for the spam :) This is tricky stuff. In general we try to avoid sync i/o in Nautilus, but its very complicated to do in the case of dnd where we really need a sync reply immediately or the ui looks weird (we don't immediately show the right cursor and you might have to wiggle the mouse to get it to change even). Another complication is that doing generic gnome-vfs i/o can cause authentication dialogs to pop up, which is bad during dnd. So, I think the best workaround is to continue using sync i/o in this case. But lets try minimizing it. So, only do this magic for local files (i.e. file: uris), stat as few times as possible and cache i/o results. So, the two patches in your mail need to be combined into one should_convert_move_to_copy() function that does at most one stat of the target and one of the source. Furthermore, we should cache the results of this function for the last target/source pair, which I think can be done by using user-data on the drag context. Does that sound good? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad sweet-toothed dwarf gone bad. She's a wealthy hip-hop hooker living homeless in New York's sewers. They fight crime! From alexl@redhat.com Mon Jun 12 05:56:54 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F4993B00A7 for ; Mon, 12 Jun 2006 05:56:54 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-03 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A5AC63B00A6 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMJV025635; Mon, 12 Jun 2006 05:56:22 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMGU014838; Mon, 12 Jun 2006 05:56:22 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uLdp015128; Mon, 12 Jun 2006 05:56:22 -0400 From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1149109286.3625.89.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:56:22 +0200 Message-Id: <1150106182.3023.107.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:56:54 -0000 On Wed, 2006-05-31 at 16:01 -0500, Federico Mena Quintero wrote: > Hi, > > I finally found the reason why volume icons overlap in the desktop > (http://bugzilla.gnome.org/show_bug.cgi?id=330298) > > finish_adding_new_icons() was ignoring all lazily-positioned icons when > filling up the PlacemenGrid. This caused the overlaps. The fix is to > make icon_set_position() turn off that flag in the icon. > > Also, once a lazily-positioned icon was moved to avoid overlaps, we > weren't emitting icon_position_changed so that the higher-level code > would save the new position metadata. This caused potential overlaps > when restarting Nautilus. > > Is this OK to commit? > > [This needs a little change to apply to Manny's latest version of > nautilus-icon-container.c, which doesn't have separate scaling values > for x/y, but that's a trivial change I'll make when applying the patch.] I thought this bug was fixed already? Manny, whats your opinion on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding overambitious jungle king with a winning smile and a way with the ladies. She's a plucky hypochondriac wrestler looking for love in all the wrong places. They fight crime! From alexl@redhat.com Mon Jun 12 05:58:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 439223B00A6 for ; Mon, 12 Jun 2006 05:58:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29028-05 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 99BAF3B00D8 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5O0026237; Mon, 12 Jun 2006 05:58:05 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5oH015029; Mon, 12 Jun 2006 05:58:05 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w4Lp015176; Mon, 12 Jun 2006 05:58:05 -0400 From: Alexander Larsson To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:58:04 +0200 Message-Id: <1150106285.3023.109.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:58:34 -0000 On Fri, 2006-06-02 at 10:49 +0100, James Pharaoh wrote: > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. We used to look for a ".directory" file in each directory that let you set both icon and name for the directory (the file used was a desktop file). However, looking for an extra file each time we look at a directory was a significant performance problem, so this was removed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly small-town matador on a mission from God. She's a high-kicking African-American stripper with her own daytime radio talk show. They fight crime! From alexl@redhat.com Mon Jun 12 06:03:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 47A983B008A; Mon, 12 Jun 2006 06:03:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29048-09; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937FE3B0083; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IEV027487; Mon, 12 Jun 2006 06:02:18 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IBT015943; Mon, 12 Jun 2006 06:02:18 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2G6h015653; Mon, 12 Jun 2006 06:02:17 -0400 From: Alexander Larsson To: Xavier Claessens In-Reply-To: <1149501410.7231.27.camel@zdra-desktop> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> <1149501410.7231.27.camel@zdra-desktop> Content-Type: text/plain Date: Mon, 12 Jun 2006 12:02:16 +0200 Message-Id: <1150106537.3023.112.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: Christian Neumair , Vincent Untz , "nautilus-list@gnome.org" , Mark McLoughlin Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 10:03:01 -0000 On Mon, 2006-06-05 at 11:56 +0200, Xavier Claessens wrote: > So what I propose is adding some objects to libnautilus-private to have > a common way handling Drive and Volume files. In the same way of > nautilus_destkop_* we can make something like nautilus_volume_file and > nautilus_drive_file which would be used to computer:///, > x-nautilus-desktop:///,etc. > > On this objects we can have methods like > > gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); > > to replace the eject_for_type(). And > > void nautilus_volume_file_get_options (NautilusDriveFile*, > gboolean *show_mount, > gboolean *show_unmount, > gboolean *show_eject, > gboolean *show_format); > > To know which options we can show for this file. > > I don't know exactly how all that can work and if that's a good idea but > I can work on it this summer. I'll experiment some patches as soon as my > exams finishes. > > I would be happy to have comments on this. I'm not sure we really need a new object type for this (since there are full-blown objects for volume and drive already this will just cause pain). However, moving these functions into one shared place in libnautilus-private and generalizing them as best we can sounds like a good plan. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a maverick overambitious filmmaker with a robot buddy named Sparky. She's a wealthy communist doctor from a family of eight older brothers. They fight crime! From sivan@ubuntu.com Tue Jun 13 06:01:08 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9334F3B000C for ; Tue, 13 Jun 2006 06:01:08 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18979-03 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8D3323B00C9 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from bzq-84-108-224-64.cablep.bezeqint.net (bzq-84-108-224-64.cablep.bezeqint.net [84.108.224.64]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8778C1053A; Tue, 13 Jun 2006 11:59:56 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150106076.3023.105.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Tue, 13 Jun 2006 12:59:56 +0300 Message-Id: <1150192797.6544.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.417 tagged_above=-999 required=2 tests=[AWL=0.047, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.417 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 10:01:08 -0000 On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > Another complication is that doing generic gnome-vfs i/o can cause > authentication dialogs to pop up, which is bad during dnd. If it occurs during after a remote sessions has been dropped and the target window is till on, I can't see why it can create a problem. (I believe Win32 based platforms follow this approach as well) > So, the two patches in your mail need to be combined into one > should_convert_move_to_copy() function that does at most one stat of the > target and one of the source. Furthermore, we should cache the results > of this function for the last target/source pair, which I think can be > done by using user-data on the drag context. Some question: * The user ownership patch was not created by me, I think it's taken from nautilus's CVS ;-) * Wouldn't it be easier and more readable to use nautilus own already cache enabled file permissoin and access functions ? (as in libnautilus-private/nautilus-file.h, Manny noted to me these are cache enabled) Cheers, Sivan From alexl@redhat.com Tue Jun 13 07:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D0B863B000A for ; Tue, 13 Jun 2006 07:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20874-04 for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9B2343B000C for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOH0b003764; Tue, 13 Jun 2006 06:24:17 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOHxZ029012; Tue, 13 Jun 2006 06:24:17 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOGuB003508; Tue, 13 Jun 2006 06:24:16 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150192797.6544.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> Content-Type: text/plain Date: Tue, 13 Jun 2006 12:24:14 +0200 Message-Id: <1150194254.3023.167.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:13:45 -0000 On Tue, 2006-06-13 at 12:59 +0300, Sivan Greenberg wrote: > On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > > > Another complication is that doing generic gnome-vfs i/o can cause > > authentication dialogs to pop up, which is bad during dnd. > > If it occurs during after a remote sessions has been dropped and the > target window is till on, I can't see why it can create a problem. (I > believe Win32 based platforms follow this approach as well) If you do i/o while the drag is happening you'll get the dialog while you're dragging. This is bad in itself, for instance you can't type or click on it without releasing the drag, and then there are potential risks for stuck pointer grabs with modal dialogs. > > So, the two patches in your mail need to be combined into one > > should_convert_move_to_copy() function that does at most one stat of the > > target and one of the source. Furthermore, we should cache the results > > of this function for the last target/source pair, which I think can be > > done by using user-data on the drag context. > > Some question: > > * The user ownership patch was not created by me, I think it's taken > from nautilus's CVS ;-) So? Just change it. :) > * Wouldn't it be easier and more readable to use nautilus own already > cache enabled file permissoin and access functions ? (as in > libnautilus-private/nautilus-file.h, Manny noted to me these are cache > enabled) NautilusFile is the nautilus async machinery. Take a look at for instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some details how it works. You can't really use this in a sync way (except if you're lucky and the info was already cached). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted voodoo paramedic haunted by an iconic dead American confidante She's a radical red-headed femme fatale with an evil twin sister. They fight crime! From federico@ximian.com Tue Jun 13 12:03:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 736FB3B00DB for ; Tue, 13 Jun 2006 12:03:41 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29142-07 for ; Tue, 13 Jun 2006 12:03:39 -0400 (EDT) Received: from peabody.ximian.com (peabody.ximian.com [130.57.169.10]) by menubar.gnome.org (Postfix) with ESMTP id F40593B0071 for ; Tue, 13 Jun 2006 12:03:38 -0400 (EDT) Received: (qmail 22918 invoked from network); 13 Jun 2006 15:55:54 -0000 Received: from localhost (HELO 164-99-120-90.boston.ximian.com) (127.0.0.1) by localhost with SMTP; 13 Jun 2006 15:55:54 -0000 From: Federico Mena Quintero To: Alexander Larsson In-Reply-To: <1150106182.3023.107.camel@greebo> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> Content-Type: text/plain Date: Tue, 13 Jun 2006 10:51:33 -0500 Message-Id: <1150213894.17566.105.camel@cacharro.xalalinux.org> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.574 tagged_above=-999 required=2 tests=[AWL=0.025, BAYES_00=-2.599] X-Spam-Score: -2.574 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 16:03:41 -0000 On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > I thought this bug was fixed already? > Manny, whats your opinion on this? I believe Manny's patches were about fine-tuning the placement grid and positioning in general. My patch is about maintaining the right metadata for icons by emitting the signal as appropriate, and about really maintaining the position of icons which were lazily placed. Federico From sivan@ubuntu.com Tue Jun 13 18:40:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0FA973B00C9 for ; Tue, 13 Jun 2006 18:40:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08820-08 for ; Tue, 13 Jun 2006 18:40:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 015523B000E for ; Tue, 13 Jun 2006 18:40:30 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id DB37F4509; Wed, 14 Jun 2006 00:39:17 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150194254.3023.167.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 01:39:21 +0300 Message-Id: <1150238361.5853.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 22:40:34 -0000 On Tue, 2006-06-13 at 12:24 +0200, Alexander Larsson wrote: > NautilusFile is the nautilus async machinery. Take a look at for > instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some > details how it works. You can't really use this in a sync way (except if > you're lucky and the info was already cached). > Cool, so should I just aim to use stock sync and cached up file access functions from gnome-vfs ? (I understand from that you are suggesting to refrain from using the sync func of nautilus-io) Sivan From alexl@redhat.com Wed Jun 14 03:06:36 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8E1163B0014 for ; Wed, 14 Jun 2006 03:06:36 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20144-09 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2B58E3B0004 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75miD013721; Wed, 14 Jun 2006 03:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75mMR009753; Wed, 14 Jun 2006 03:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75l1O019900; Wed, 14 Jun 2006 03:05:48 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150238361.5853.0.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 09:05:47 +0200 Message-Id: <1150268748.3023.170.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 07:06:36 -0000 On Wed, 2006-06-14 at 01:39 +0300, Sivan Greenberg wrote: > > Cool, so should I just aim to use stock sync and cached up file access > functions from gnome-vfs ? (I understand from that you are suggesting > to > refrain from using the sync func of nautilus-io) You might as well use g_stat() if you're working on local files only. Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also an automatic check for local files, since it returns NULL for other uris.) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal pirate barbarian with a robot buddy named Sparky. She's a manipulative bisexual college professor from a different time and place. They fight crime! From sivan@ubuntu.com Wed Jun 14 05:35:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 16DF43B04FC for ; Wed, 14 Jun 2006 05:35:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26784-02 for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8457E3B053D for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id E28F629CD05; Wed, 14 Jun 2006 11:34:00 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150268748.3023.170.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 12:34:06 +0300 Message-Id: <1150277646.6568.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:35:24 -0000 On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > You might as well use g_stat() if you're working on local files only. > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > an automatic check for local files, since it returns NULL for other > uris.) I hope it's going to be easy as it seems ;-). On a related note, why are g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , (gnome_vfs_get_file_info_uri()) Sivan From alexl@redhat.com Wed Jun 14 05:47:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id F0D593B040E for ; Wed, 14 Jun 2006 05:47:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27324-08 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 83C2E3B04B3 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9keHl002050; Wed, 14 Jun 2006 05:46:40 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kZtw005095; Wed, 14 Jun 2006 05:46:35 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kYt0002077; Wed, 14 Jun 2006 05:46:34 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150277646.6568.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 11:46:34 +0200 Message-Id: <1150278394.26621.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:47:32 -0000 On Wed, 2006-06-14 at 12:34 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > > > You might as well use g_stat() if you're working on local files only. > > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > > an automatic check for local files, since it returns NULL for other > > uris.) > > I hope it's going to be easy as it seems ;-). On a related note, why are > g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones > I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , > (gnome_vfs_get_file_info_uri()) They are not cached. You have to implement that yourself. The reason to use g_stat directly is just to avoid lots of levels of indirection and bloat when its not needed (i.e. you're only doing this for local files anyway). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding one-eyed jungle king on his last day in the job. She's a man-hating goth mercenary who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From sivan@ubuntu.com Wed Jun 14 09:28:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 748873B029B for ; Wed, 14 Jun 2006 09:28:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15163-07 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 29D2E3B0119 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from [192.168.2.101] (87.69.31.132.cable.012.net.il [87.69.31.132]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BB0CC2A6BFD; Wed, 14 Jun 2006 15:27:18 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 16:26:56 +0300 Message-Id: <1150291617.5322.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 13:28:07 -0000 On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf@free.fr Wed Jun 14 15:43:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 870EF3B000E for ; Wed, 14 Jun 2006 15:43:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04192-03 for ; Wed, 14 Jun 2006 15:43:40 -0400 (EDT) Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by menubar.gnome.org (Postfix) with ESMTP id 6A4B33B0102 for ; Wed, 14 Jun 2006 15:43:39 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp1-g19.free.fr (Postfix) with ESMTP id 7F91C9AE0E; Wed, 14 Jun 2006 21:43:08 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Content-Type: multipart/mixed; boundary="=-6ha9yoI4TiErFtbzzRYq" Date: Wed, 14 Jun 2006 21:43:02 +0200 Message-Id: <1150314184.8687.75.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.511 tagged_above=-999 required=2 tests=[AWL=-0.066, BAYES_00=-2.599, TW_BF=0.077, TW_XB=0.077] X-Spam-Score: -2.511 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 19:43:44 -0000 --=-6ha9yoI4TiErFtbzzRYq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick --=-6ha9yoI4TiErFtbzzRYq Content-Disposition: attachment; filename=nautilushang2 Content-Type: text/plain; name=nautilushang2; charset=utf-8 Content-Transfer-Encoding: 7bit [pjacquot@neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot@neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) --=-6ha9yoI4TiErFtbzzRYq-- From alexl@redhat.com Thu Jun 15 03:31:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2922C3B002B for ; Thu, 15 Jun 2006 03:31:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19338-08 for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 96E493B00FE for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJGA017396; Thu, 15 Jun 2006 03:31:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJPR008545; Thu, 15 Jun 2006 03:31:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VIdM006092; Thu, 15 Jun 2006 03:31:18 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Thu, 15 Jun 2006 09:31:16 +0200 Message-Id: <1150356676.26621.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:31:24 -0000 On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application@ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Thu Jun 15 03:32:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 08A5B3B0126 for ; Thu, 15 Jun 2006 03:32:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19413-06 for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 8B3E63B002B for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WfUL017815; Thu, 15 Jun 2006 03:32:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7Wa1T008783; Thu, 15 Jun 2006 03:32:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WZ5W006145; Thu, 15 Jun 2006 03:32:36 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Content-Type: text/plain Date: Thu, 15 Jun 2006 09:32:35 +0200 Message-Id: <1150356755.26621.8.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:32:58 -0000 On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot@anpe.fr Thu Jun 15 04:17:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DED9A3B0298 for ; Thu, 15 Jun 2006 04:17:30 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22167-05 for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from smtp3.lc.anpe.fr (smtp3.lc.anpe.fr [80.118.163.18]) by menubar.gnome.org (Postfix) with ESMTP id 45FFD3B00FE for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from HOMERE02.anpe.fr (localhost.localdomain [127.0.0.1]) by smtp3.lc.anpe.fr (antivirus) with ESMTP id 9498573CB7; Thu, 15 Jun 2006 10:17:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE02.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 15 Jun 2006 10:15:57 +0200 Message-ID: <44911757.6070100@anpe.fr> Date: Thu, 15 Jun 2006 10:16:23 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> In-Reply-To: <1150356676.26621.5.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 15 Jun 2006 08:15:57.0655 (UTC) FILETIME=[EE03CE70:01C69053] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:17:31 -0000 Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application@ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl@redhat.com Thu Jun 15 04:31:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4597A3B045B for ; Thu, 15 Jun 2006 04:31:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22773-09 for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F8DD3B045A for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8Vl3p004055; Thu, 15 Jun 2006 04:31:47 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VlIQ020296; Thu, 15 Jun 2006 04:31:47 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VkBA014758; Thu, 15 Jun 2006 04:31:47 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Content-Type: text/plain Date: Thu, 15 Jun 2006 10:31:46 +0200 Message-Id: <1150360307.26621.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:31:58 -0000 On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan@ubuntu.com Thu Jun 15 04:36:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C31D23B0155 for ; Thu, 15 Jun 2006 04:36:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23178-08 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 5EC753B00F7 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from [192.168.1.222] (89.0.59.223.dynamic.barak-online.net [89.0.59.223]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 1F8982A6C13; Thu, 15 Jun 2006 10:36:22 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Thu, 15 Jun 2006 11:36:22 +0300 Message-Id: <1150360583.5504.4.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:36:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel@embl.fr Thu Jun 15 07:58:30 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE6BA3B041F for ; Thu, 15 Jun 2006 07:58:29 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04112-09 for ; Thu, 15 Jun 2006 07:58:26 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CD7493B04B1 for ; Thu, 15 Jun 2006 07:58:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FBwNm20535; Thu, 15 Jun 2006 13:58:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp020384; Thu Jun 15 13:58:01 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 68FD93A009C; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 5D65A3A008B; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Message-ID: <44914B5C.8040003@embl.fr> Date: Thu, 15 Jun 2006 13:58:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: nautilus-list@gnome.org References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> In-Reply-To: <1146067801.621.43.camel@greebo> Content-Type: multipart/mixed; boundary=------------030804040701090309040506 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.47 tagged_above=-999 required=2 tests=[AWL=-0.007, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.47 X-Spam-Level: Cc: grumz@grumz.net X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 11:58:30 -0000 This is a multi-part message in MIME format. --------------030804040701090309040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > --------------030804040701090309040506 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030804040701090309040506-- From ruaudel@embl.fr Thu Jun 15 08:30:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9028C3B0445 for ; Thu, 15 Jun 2006 08:30:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06870-02 for ; Thu, 15 Jun 2006 08:30:00 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 9B2383B042C for ; Thu, 15 Jun 2006 08:29:59 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FCTl110148; Thu, 15 Jun 2006 14:29:47 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp008288; Thu Jun 15 14:26:19 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 0C35E3A009C; Thu, 15 Jun 2006 14:25:32 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid E9DC23A008B; Thu, 15 Jun 2006 14:25:31 +0200 (CEST) Message-ID: <449151FE.2070906@embl.fr> Date: Thu, 15 Jun 2006 14:26:38 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> In-Reply-To: <44914B5C.8040003@embl.fr> Content-Type: multipart/mixed; boundary=------------040407040200090207040807 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:30.64249 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.536 tagged_above=-999 required=2 tests=[AWL=0.062, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.536 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 12:30:02 -0000 This is a multi-part message in MIME format. --------------040407040200090207040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Frédéric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl@redhat.com alla@lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > --------------040407040200090207040807 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------040407040200090207040807-- From patrick.jacquotf@free.fr Thu Jun 15 13:36:49 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5A7663B0397 for ; Thu, 15 Jun 2006 13:36:49 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25173-04 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 538763B0311 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 6676E4444D; Thu, 15 Jun 2006 19:34:32 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Content-Type: text/plain; charset=utf-8 Date: Thu, 15 Jun 2006 19:34:26 +0200 Message-Id: <1150392867.8687.79.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.585 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599] X-Spam-Score: -2.585 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 17:36:49 -0000 Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl@redhat.com Fri Jun 16 03:13:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA2653B002C for ; Fri, 16 Jun 2006 03:13:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20384-08 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A6B853B0011 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8Y3006797; Fri, 16 Jun 2006 02:45:08 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8bO013639; Fri, 16 Jun 2006 02:45:08 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j6oC001946; Fri, 16 Jun 2006 02:45:07 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 08:45:06 +0200 Message-Id: <1150440307.26621.41.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 07:13:58 -0000 On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan@ubuntu.com Fri Jun 16 04:03:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21E6E3B0076 for ; Fri, 16 Jun 2006 04:03:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21280-09 for ; Fri, 16 Jun 2006 04:03:28 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id E8EC33B0011 for ; Fri, 16 Jun 2006 04:03:27 -0400 (EDT) Received: from badtemperrodent.net (badtemperrodent.net [192.117.110.191]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8CFB82A6BFF; Fri, 16 Jun 2006 09:41:56 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Fri, 16 Jun 2006 10:39:05 +0300 Message-Id: <1150443545.5513.18.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:03:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl@redhat.com Fri Jun 16 04:16:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7A853B002C for ; Fri, 16 Jun 2006 04:16:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22202-08 for ; Fri, 16 Jun 2006 04:16:00 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F40B13B006C for ; Fri, 16 Jun 2006 04:15:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F9j6000439; Fri, 16 Jun 2006 04:15:09 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F46p028945; Fri, 16 Jun 2006 04:15:04 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F3cm012357; Fri, 16 Jun 2006 04:15:03 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:15:03 +0200 Message-Id: <1150445703.26621.60.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:16:01 -0000 On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl@redhat.com Fri Jun 16 04:41:12 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 557D03B0011 for ; Fri, 16 Jun 2006 04:41:12 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22567-09 for ; Fri, 16 Jun 2006 04:41:11 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id CFBBB3B0007 for ; Fri, 16 Jun 2006 04:41:10 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8Za55006178; Fri, 16 Jun 2006 04:35:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZV2m032257; Fri, 16 Jun 2006 04:35:31 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZUux013456; Fri, 16 Jun 2006 04:35:30 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: Frederic Ruaudel In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:35:30 +0200 Message-Id: <1150446930.26621.70.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:41:12 -0000 On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin@xs4all.nl Fri Jun 16 05:04:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 98D7C3B002C for ; Fri, 16 Jun 2006 05:04:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23115-09 for ; Fri, 16 Jun 2006 05:04:27 -0400 (EDT) Received: from smtp-vbr11.xs4all.nl (smtp-vbr11.xs4all.nl [194.109.24.31]) by menubar.gnome.org (Postfix) with ESMTP id C07BF3B0007 for ; Fri, 16 Jun 2006 05:04:26 -0400 (EDT) Received: from [172.16.0.167] (a82-94-101-162.adsl.xs4all.nl [82.94.101.162]) (authenticated bits=0) by smtp-vbr11.xs4all.nl (8.13.6/8.13.6) with ESMTP id k5G93fN8053607 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Fri, 16 Jun 2006 11:03:41 +0200 (CEST) (envelope-from rubin@xs4all.nl) Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Rubin To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 16 Jun 2006 11:03:41 +0200 Message-Id: <1150448621.29988.7.camel@thinkpad> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 16 Jun 2006 05:24:20 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:04:28 -0000 Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when replying to this! Thanks! Rubin. From alexl@redhat.com Fri Jun 16 05:55:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id A4FE73B000B for ; Fri, 16 Jun 2006 05:55:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24488-05 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 411CE3B0012 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXBo031898; Fri, 16 Jun 2006 05:54:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXTM013747; Fri, 16 Jun 2006 05:54:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sW3W017065; Fri, 16 Jun 2006 05:54:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 11:54:32 +0200 Message-Id: <1150451672.26621.77.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:55:38 -0000 On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl@redhat.com Fri Jun 16 08:13:04 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21C553B006C for ; Fri, 16 Jun 2006 08:13:04 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27898-03 for ; Fri, 16 Jun 2006 08:13:03 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DC1763B002C for ; Fri, 16 Jun 2006 08:13:02 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCPrp006369; Fri, 16 Jun 2006 08:12:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCKTB004736; Fri, 16 Jun 2006 08:12:20 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCJn6025533; Fri, 16 Jun 2006 08:12:20 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Content-Type: text/plain Date: Fri, 16 Jun 2006 14:12:19 +0200 Message-Id: <1150459940.26621.88.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:13:04 -0000 On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:27:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 064A53B0011 for ; Fri, 16 Jun 2006 08:27:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28295-08 for ; Fri, 16 Jun 2006 08:27:55 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CB2B33B002C for ; Fri, 16 Jun 2006 08:27:54 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCR3Z13371; Fri, 16 Jun 2006 14:27:03 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp013140; Fri Jun 16 14:26:43 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id B41023A009C; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid A52D83A008B; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Message-ID: <4492A396.6040708@embl.fr> Date: Fri, 16 Jun 2006 14:27:02 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> In-Reply-To: <1150460132.26621.91.camel@greebo> Content-Type: multipart/mixed; boundary=------------090102050009040200050407 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:93.88275 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.474 tagged_above=-999 required=2 tests=[AWL=-0.011, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.474 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:27:57 -0000 This is a multi-part message in MIME format. --------------090102050009040200050407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? --------------090102050009040200050407 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090102050009040200050407-- From alexl@redhat.com Fri Jun 16 08:36:45 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8EEAD3B00A2 for ; Fri, 16 Jun 2006 08:36:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28772-01 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 3F2483B0076 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCa32c012746; Fri, 16 Jun 2006 08:36:03 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZwoG008648; Fri, 16 Jun 2006 08:35:58 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZvod026619; Fri, 16 Jun 2006 08:35:58 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:35:57 +0200 Message-Id: <1150461357.26621.94.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:36:45 -0000 On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Frédéric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:41:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE0873B0007 for ; Fri, 16 Jun 2006 08:41:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28628-04 for ; Fri, 16 Jun 2006 08:41:37 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 728BA3B0076 for ; Fri, 16 Jun 2006 08:41:35 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCebu21324; Fri, 16 Jun 2006 14:40:37 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021209; Fri Jun 16 14:40:26 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 6113F3A009C; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 569F63A008B; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Message-ID: <4492A6CE.1040904@embl.fr> Date: Fri, 16 Jun 2006 14:40:46 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> In-Reply-To: <1150461357.26621.94.camel@greebo> Content-Type: multipart/mixed; boundary=------------020601000705080507000607 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.542 tagged_above=-999 required=2 tests=[AWL=0.056, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.542 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:41:39 -0000 This is a multi-part message in MIME format. --------------020601000705080507000607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. --------------020601000705080507000607 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------020601000705080507000607-- From patrick.jacquot@anpe.fr Fri Jun 16 08:45:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8114F3B0074 for ; Fri, 16 Jun 2006 08:45:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28690-06 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from smtp2.lc.anpe.fr (smtp2.lc.anpe.fr [80.118.163.16]) by menubar.gnome.org (Postfix) with ESMTP id 5012E3B0012 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from HOMERE01.anpe.fr (amadeus [127.0.0.1]) by smtp2.lc.anpe.fr (antivirus) with ESMTP id 39F4673C9C; Fri, 16 Jun 2006 13:54:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE01.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Fri, 16 Jun 2006 13:53:25 +0200 Message-ID: <44929BCF.2080909@anpe.fr> Date: Fri, 16 Jun 2006 13:53:51 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> In-Reply-To: <1150440307.26621.41.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 16 Jun 2006 11:53:25.0151 (UTC) FILETIME=[795772F0:01C6913B] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:45:13 -0000 Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl@redhat.com Fri Jun 16 08:49:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 485F93B002C for ; Fri, 16 Jun 2006 08:49:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29026-04 for ; Fri, 16 Jun 2006 08:49:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C6C253B0007 for ; Fri, 16 Jun 2006 08:49:18 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPNN016840; Fri, 16 Jun 2006 08:48:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPYD011183; Fri, 16 Jun 2006 08:48:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmOqK027223; Fri, 16 Jun 2006 08:48:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:48:24 +0200 Message-Id: <1150462104.1962.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:49:20 -0000 On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Frédéric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:55:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D29373B0012 for ; Fri, 16 Jun 2006 08:55:43 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29229-01 for ; Fri, 16 Jun 2006 08:55:42 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 1229B3B0007 for ; Fri, 16 Jun 2006 08:55:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCrIL28510; Fri, 16 Jun 2006 14:53:18 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp028490; Fri Jun 16 14:53:17 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E00233A009C; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid D44943A008B; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Message-ID: <4492A9D0.1030804@embl.fr> Date: Fri, 16 Jun 2006 14:53:36 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> In-Reply-To: <1150462104.1962.1.camel@greebo> Content-Type: multipart/mixed; boundary=------------070000060703070709040705 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:55:44 -0000 This is a multi-part message in MIME format. --------------070000060703070709040705 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? --------------070000060703070709040705 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------070000060703070709040705-- From alexl@redhat.com Fri Jun 16 09:09:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B9E0D3B0076 for ; Fri, 16 Jun 2006 09:09:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29459-05 for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 570133B002C for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8PQk023537; Fri, 16 Jun 2006 09:08:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8Ptc015871; Fri, 16 Jun 2006 09:08:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8NU0029583; Fri, 16 Jun 2006 09:08:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 15:08:24 +0200 Message-Id: <1150463304.1962.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 13:09:10 -0000 On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris@gnome-de.org Fri Jun 16 10:02:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D214C3B0012 for ; Fri, 16 Jun 2006 10:02:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30453-09 for ; Fri, 16 Jun 2006 10:02:06 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 8119F3B000B for ; Fri, 16 Jun 2006 10:02:04 -0400 (EDT) Received: (qmail 95134 invoked by uid 85); 16 Jun 2006 14:01:10 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.188.32):. Processed in 4.939873 secs); 16 Jun 2006 14:01:10 -0000 Received: from p5496bc20.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.188.32) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 16 Jun 2006 14:01:05 -0000 Subject: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-72GyeevQ02c61O4EiZxt" Date: Fri, 16 Jun 2006 16:01:00 +0200 Message-Id: <1150466460.16424.7.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.51 tagged_above=-999 required=2 tests=[AWL=-0.065, BAYES_00=-2.599, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.51 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:02:08 -0000 --=-72GyeevQ02c61O4EiZxt Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair --=-72GyeevQ02c61O4EiZxt Content-Disposition: attachment; filename=nautilus-sm2.diff Content-Type: text/x-patch; name=nautilus-sm2.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit ? src/.nautilus-application.c.swp Index: configure.in =================================================================== RCS file: /cvs/gnome/nautilus/configure.in,v retrieving revision 1.675 diff -u -p -r1.675 configure.in --- configure.in 12 Jun 2006 12:35:55 -0000 1.675 +++ configure.in 16 Jun 2006 13:58:45 -0000 @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.226 diff -u -p -r1.226 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 18 Mar 2006 07:13:49 -0000 1.226 +++ libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 13:58:48 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.132 diff -u -p -r1.132 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 15 Dec 2005 14:32:57 -0000 1.132 +++ libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 13:58:49 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 16 Jun 2006 13:58:49 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 16 Jun 2006 13:59:00 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1139,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1172,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1326,265 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + g_message ("is %s\n", filename); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[4] = { NULL }; + + argv[0] = "nautilus"; + argv[1] = "--no-default-window"; + + argv[3] = save_session_to_file (); + if (argv[3] != NULL) { + argv[2] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[3] != NULL) { + g_free (argv[3]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 16 Jun 2006 13:59:00 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 16 Jun 2006 13:59:01 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,8 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + N_("Load a saved session from the specified file."), N_("FILENAME") }, { NULL } }; @@ -243,6 +246,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -349,6 +353,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 16 Jun 2006 13:59:05 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 16 Jun 2006 13:59:05 -0000 @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); void start_desktop (); void stop_desktop (); void quit (); Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 16 Jun 2006 13:59:06 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 16 Jun 2006 13:59:08 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 16 Jun 2006 13:59:14 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 16 Jun 2006 13:59:15 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 16 Jun 2006 13:59:19 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-72GyeevQ02c61O4EiZxt-- From ruaudel@embl.fr Fri Jun 16 10:17:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 041543B0007 for ; Fri, 16 Jun 2006 10:17:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31262-02 for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 409803B000B for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GEEN515027; Fri, 16 Jun 2006 16:14:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp014897; Fri Jun 16 16:14:14 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E9D453A00A3; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid BD85C3A009C; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Message-ID: <4492BCC9.3070701@embl.fr> Date: Fri, 16 Jun 2006 16:14:34 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> In-Reply-To: <1150463304.1962.5.camel@greebo> Content-Type: multipart/mixed; boundary=------------030607090300020602080800 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:17:27 -0000 This is a multi-part message in MIME format. --------------030607090300020602080800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred --------------030607090300020602080800 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030607090300020602080800-- From alexl@redhat.com Fri Jun 16 10:40:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 69B0D3B000B for ; Fri, 16 Jun 2006 10:40:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31864-09 for ; Fri, 16 Jun 2006 10:40:38 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F30943B0074 for ; Fri, 16 Jun 2006 10:40:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJwW018100 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJj5001340 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMI38001834 for ; Fri, 16 Jun 2006 10:22:18 -0400 Subject: New permissions page From: Alexander Larsson To: Nautilus Content-Type: text/plain Date: Fri, 16 Jun 2006 16:22:18 +0200 Message-Id: <1150467738.1962.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:40:39 -0000 I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl@redhat.com Fri Jun 16 10:45:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B94D3B000B for ; Fri, 16 Jun 2006 10:45:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32146-02 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id B3F8A3B0074 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXFs007293; Fri, 16 Jun 2006 08:15:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXJC005301; Fri, 16 Jun 2006 08:15:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFWR2025637; Fri, 16 Jun 2006 08:15:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:15:32 +0200 Message-Id: <1150460132.26621.91.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:45:34 -0000 On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl@redhat.com Fri Jun 16 11:41:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA65B3B0080 for ; Fri, 16 Jun 2006 11:41:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01486-01 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 4FDAD3B0076 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFenfc011852; Fri, 16 Jun 2006 11:40:49 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFei3o019963; Fri, 16 Jun 2006 11:40:44 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFegbZ008520; Fri, 16 Jun 2006 11:40:43 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 17:40:37 +0200 Message-Id: <1150472437.1962.14.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 15:41:24 -0000 On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Frédéric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko@yahoo.com Sat Jun 17 03:33:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1350E3B028A for ; Sat, 17 Jun 2006 03:33:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12115-05 for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: from web32408.mail.mud.yahoo.com (web32408.mail.mud.yahoo.com [68.142.207.201]) by menubar.gnome.org (Postfix) with SMTP id 4082B3B071C for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: (qmail 60442 invoked by uid 60001); 17 Jun 2006 07:21:00 -0000 Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Received: from [172.188.218.75] by web32408.mail.mud.yahoo.com via HTTP; Sat, 17 Jun 2006 08:21:00 BST Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) From: Joachim Noreiko Subject: Re: New permissions page To: nautilus-list@gnome.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.909 tagged_above=-999 required=2 tests=[AWL=-1.446, BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: -0.909 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 07:33:56 -0000 --- nautilus-list-request@gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel@embl.fr Sat Jun 17 22:34:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDE743B00B2 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20813-01 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 5EF613B0087 for ; Sat, 17 Jun 2006 22:34:38 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5G92UM21496; Fri, 16 Jun 2006 11:02:30 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021214; Fri Jun 16 11:02:03 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 044C73A00A3; Fri, 16 Jun 2006 11:01:15 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid EC8163A008B; Fri, 16 Jun 2006 11:01:14 +0200 (CEST) Message-ID: <4492739C.3080608@embl.fr> Date: Fri, 16 Jun 2006 11:02:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Content-Type: multipart/mixed; boundary=------------000207040807030500030609 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:52.55345 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:43 -0000 This is a multi-part message in MIME format. --------------000207040807030500030609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred --------------000207040807030500030609 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------000207040807030500030609-- From ruaudel@embl.fr Sat Jun 17 22:34:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3A48B3B00DC for ; Sat, 17 Jun 2006 22:34:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20639-05 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id C6F0D3B0128 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GBrm324709; Fri, 16 Jun 2006 13:53:48 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp024600; Fri Jun 16 13:53:28 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id C79C53A009C; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid B98E93A008B; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Message-ID: <44929BCB.3000405@embl.fr> Date: Fri, 16 Jun 2006 13:53:47 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> In-Reply-To: <1150451672.26621.77.camel@greebo> Content-Type: multipart/mixed; boundary=------------090306030603010903060903 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:44 -0000 This is a multi-part message in MIME format. --------------090306030603010903060903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > --------------090306030603010903060903 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090306030603010903060903-- From alexl@redhat.com Mon Jun 19 05:34:55 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0A03B3B00A5 for ; Mon, 19 Jun 2006 05:34:55 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-04 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 7FA463B00A4 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XWjY003333; Mon, 19 Jun 2006 05:33:32 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XRpk001435; Mon, 19 Jun 2006 05:33:27 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XQSo027998; Mon, 19 Jun 2006 05:33:27 -0400 Subject: Re: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Alexander Larsson To: Rubin In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Content-Type: text/plain Date: Mon, 19 Jun 2006 11:33:26 +0200 Message-Id: <1150709607.1962.31.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:34:55 -0000 On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel@gmail.com Sat Jun 17 22:37:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B99513B00B2 for ; Sat, 17 Jun 2006 22:37:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20627-08 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.227]) by menubar.gnome.org (Postfix) with ESMTP id 981F23B0089 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: by wr-out-0506.google.com with SMTP id 68so857489wra for ; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.152.12 with SMTP id z12mr4476063wrd; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.102.7 with HTTP; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Date: Sat, 17 Jun 2006 20:36:28 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org Subject: widget advice for nautilus view MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:37:24 -0000 I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl@redhat.com Mon Jun 19 05:32:52 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D5A93B0004 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-02 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DA9513B008F for ; Mon, 19 Jun 2006 05:32:50 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9VmqA002779; Mon, 19 Jun 2006 05:31:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9Vm0L001128; Mon, 19 Jun 2006 05:31:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9ViJV027920; Mon, 19 Jun 2006 05:31:45 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Joachim Noreiko In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="=-HvacVzLTIJ84Cz/f7LbQ" Date: Mon, 19 Jun 2006 11:31:44 +0200 Message-Id: <1150709505.1962.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:32:52 -0000 --=-HvacVzLTIJ84Cz/f7LbQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request@gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions1.png Content-Type: image/png; name=permissions1.png Content-Transfer-Encoding: base64 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 2Fgez04AAAAASUVORK5CYII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions2.png Content-Type: image/png; name=permissions2.png Content-Transfer-Encoding: base64 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 HMeyDhw7fhLv9Rvxe/CQq9eus2//AbX7k7VOgNr1G2eKPTfMzdP2rs//dZEzZ88zY/Y8eVloaBj/ XPkXADs7W7S10454unftzOMnT1i+cjVJScnIZDIe+gfkKUEpax8gOjqGCxf/JjU1FWdnJ2rWqM7i JX+SmJTE6zdvWLlqLV27dMp0Cmrtuo0kJCby6vVrVq9dR7eunXI8RaWsH+5urtStU4sp02by9Fkg MTEx3Lp1G9MyaUeUly7n/a6tjH0qiPpWrfYmISGBV69fs2bteoX9zSindjPGpeiz1y1RggH9erNk 6XJiY2N5ERzMug2b+G7IwDzHL+RekSSCsLBwZsycS+++g/A5cIhvvm7P5vVrM02TkJBAr74DMw3P AgOVlivau1Jm6qTxGBsbsXP3Xn7+cbh8BQa4/M8VlixbwZxZ03Es68DSxQvQ0dHml1/HE/nqVY71 WVlZcur4IQYN7EdYWBjjJvzGsP/9zKYt2/Bwd5NP979h3zFh3K/cuHGL5i3b8Pffl5g4fgzDv/9W 7dinT52EmZkpP4/8lfDwl+jp6eGzbyft27bBe91Guvfqy9gJk+TXX9TpT9Y6Ie1o7XEeli2Ag70d A/r3oW//wcydv4Axv4yQl8XFxzN67ESc3CqyYOFili1ZiJaWFlZWluzfs4Ojvidw8aiMR8WqjBj1 KykpuU8EytqHD3f5JCUlAbB+7Uqio2Nwr1CFOvUaU61qFSZPHCefXk9PD4lEQo3aDaheqz6elSsx fuyHi6fpOxJSqVRlP7xXr8DWxoZ6DZtSvVYDDh4+Srlyjgz//lt69hlAnQZNct3frH0qiPpSUlOp Uach1WvVp4pn5Uz9VSSndjPGpeizBxj76y+U93CnSrU6fN6qLd9/N1jcOlrEtACZOvfiL1swjRHj 5xAXm/u9cEEoaOVcK2QbN/m38fTuWbB/xKdIcHAI1tZWbN66nekz53D/9rUCq7u4+vbv1Wu0bN2O wMd+8utUH0tsQu7ExsayfuUChv40XuW0ppb2RfMHZYJQ0J743yvW9r3Xb2SN93r09fWZm89bWrMq 7r4p8zHHJuSdSASCkAfjxvzCuDG/FHcYBapG9WrF/pf6QvEQl+UFQRA0nEgEgiAIGk4kAkEQBA0n EoEgCIKGE4lAEARBw4lEIAiCoOFEIhAEQdBwIhEIgiBoOJEIBEEQNJxIBAUo62MwPxX5eTSloJhM JuPO3XssX7k630/dE4TC9EklAlNLe+zLuRdK3ddv3OT0mXOFUrem+eXXcdSo05CyzuVxdq9E3wFD eBEcnGmapKRkRo0ei4t7ZSp4VufPFatyVQ5pv/dTu35jnN0rUcGzOtNnzsk2jSKFXT9AxSo1GDTk e8ZNmCx/jnS68PCX9OwzAGf3SpSvXI1Zc+Yr/S1/deJN99vkaVjYOKqMT1Wdppb2OQ7pP1eujKIY 7vs9oFHTlvKH9zRo1JwDBw+rrE8oXOK3ht5r3rIN1tZW3LmR999xF9KUK+fIru+G4FjWgbdvo/jh 51F069GXc6ePyaeZOn0m9+77cfPaJd6+jaJVmw7Y2tjIf35YVfmq1d6s9l7Ptk3rKFfOkbdvozI9 mU2Vwq4f4N9L57l334+WrdtlK+vZZwC1a9Vg/dqVPH8RTIeOXTA2NuK7IYPyFG+6EydPc/josRzr yG2df53N/LjQXXv2cfrMWZVPDlMWg7WVFRvWrcbB3g4tLS32+xxk4qSpfNWmtVoxC4XjkzoiUMbf P4B2X3fB2b0SVnblaNS0JRcufnh494WLl2jW8kus7Zywc3Tjiy/by8tMLdMeGxkSEoqppT33/R4o bGfrtp00ad4KG3tn7BzdaNCoebZpfA4conLVWji5VWTHrj1qx5h+amnTlm1U8Kyebf7k5GTGTZiM s3slXNwrM33mHNwreGU6rePvH0Cnrj2xLeuKs3slxo6flGlvNDk5mTHjf6OcawVcPTyZNWd+tvjz e6rouyGDcCyb9khGY2Mjenbvyt179+XPxU1ISGDdhs0MH/YdBgYG2NhY069PT5YtX6VWeXJyMvN+ X8TY0SMpV85R3k7FCuXViq+w609XsmTOj5R8/PgJV69d53/DhiKVSinrYM/wYd+xes26PMWbLjQ0 jN8mT2Pe7Jx/DfXfq9cwtbQnISFBrTrLe7jLB9MyZdi6bQfLl/4hf3JYxvrUjaF0aWPKOtijpaVF QkICzwKD+KZjB4XLUCga/5lEEBMbS+tWn+Ozdycb163B3z+A4T/8LC8fOGQo9+8/YPNGb44c3Jvp 2b2X/joNgLm5GZf+Oo2zs1OObaxZu55hP/xMfHw8K5cvYYP3Kjp983WmaSJfvWL+gj/o2KEdb99G MXHSVLVjBAgLC2PX7n2M/XUU0dExmeZfsGgJy1eupmaN6uzcvgmZDCIiI+Xl0dExtOvYhavXrrNp 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 YII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions3.png Content-Type: image/png; name=permissions3.png Content-Transfer-Encoding: base64 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 iZ+aPf3U5P2hEBwSSkvT4O80Xkycd0Axm80/2qmkSqn6P7tuajSZcXF2wmjQnzuxDMD2+XeF0HYy BuOnZk8/NXl/KFyKdrmgTXkZPz6sDKqw/UuenVwQrFZb2y281JLIkPGzgRxQfiaQV7suDFY5AMuQ MeKQA8rPAf2fGZVx3pD3m2TIGHnIAeVnACvIU5QLhdxeMmSMOOSXFs4DOafzmBKVRG9v3/f6/YeA Vb4u7Po/FlB+DDoq4+eP/zqgZJ7IZkpUElOikoiISWHVZdewZ9+h7/28kVT8I8eO22UTXz/LEyFW q+Q6dOgw3r4BePsG4B8wmti4RD766JNB6UbyOnH8BN6+AWh7en7QvN/nOlc42X/wKFde+2ui4uYz O3kxN992F4XFpT9IV4qxdPUVvPPBJ/b7xqZmpkQl8cHHn9m51jYN0fELOJZ50m47Wm0ve/YdwmIZ uS8nlFdWMSUqiVdef1vCl5SWEzFr7nk942LIdTYMtP+IWXNJWbyau+75K+UVVRe9/IuNH7Itzxcj NkM5fmgHh3ZtYdKEcdz55wcwGAzf6zlTJk/kg7dewdVt5F6gPHFoJ2V5mfZLpfpxHn/+3rBaGeo/ gMryYirLi0iIj+eO399Jn043ZNqh/jOajOed1oqViOnT2PbNV7i6uV5Qvv827/f5b7glr63ffsdt d97DxvWryTy4g33bvyBy+jQ2XXfzDx5UUucmcfhIpv0+43gWAMdP5ti5fQePkJgwh+iZkXbbKS2r 4JY7/oTRaBr0zP8Wz7/8BiWl5d8r78WU62w4cWgnpWcyyD62h5eeeZSu7m42/OIGTp/J/8FkuBi4 FG15LoxYQFGgIDg4kPVrVmIwGOz2+uWWb1mx/iriUpaSNH8Fmz//2p7nxX//h5RFq5mdvJj1m64H oKy8kmtvvBW9Tnivor6hkd/c/kdikhYRk7SIvz782IjI2z8T2r33IGsvv464lKW8/tb7HDqSwerL rmHO3KW8+8FmSZ7s02dYueFqImPnce2Nt9LYNPTLVIeOZLB83S+YnbyY63/9O9o07d+rzKHaZyhY +/838LLxvj6+rFiejl5voFerZc/ufSQkphIWPol16y+npbkVrHDixEl8/IL48sstzJ6TyN1332fn tm3bTuq8hYybMJXnnnuRPbv3MTdlPuHjp/Dqq2+AFYqKilm9ZgO6Ph1Y4bHHn2JaRBRh4ZNIW7DE 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 tvrxfy1q6mPXqvNYAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions4.png Content-Type: image/png; name=permissions4.png Content-Transfer-Encoding: base64 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 yQv/D3ppEXAe/kOyAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ-- From alexl@redhat.com Mon Jun 19 08:41:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 006D43B09D7 for ; Mon, 19 Jun 2006 08:41:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11497-07 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F9AA3B0D96 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSaF8026601; Mon, 19 Jun 2006 08:28:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSZeG001636; Mon, 19 Jun 2006 08:28:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSYlg007366; Mon, 19 Jun 2006 08:28:35 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 14:28:35 +0200 Message-Id: <1150720115.16397.6.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 12:41:01 -0000 On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Mon Jun 19 10:47:50 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D3523B00D8 for ; Mon, 19 Jun 2006 10:47:50 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15911-05 for ; Mon, 19 Jun 2006 10:47:47 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id E9A213B0017 for ; Mon, 19 Jun 2006 10:47:46 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDndPq023522; Mon, 19 Jun 2006 09:49:39 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDnd7B020926; Mon, 19 Jun 2006 09:49:39 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDncHK013361; Mon, 19 Jun 2006 09:49:38 -0400 Subject: Re: widget advice for nautilus view From: Alexander Larsson To: Mark Kegel In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Content-Type: text/plain Date: Mon, 19 Jun 2006 15:49:38 +0200 Message-Id: <1150724978.16397.9.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 14:47:50 -0000 On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris@gnome-de.org Mon Jun 19 11:24:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3C37C3B0734 for ; Mon, 19 Jun 2006 11:24:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17721-01 for ; Mon, 19 Jun 2006 11:24:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 6A67C3B0832 for ; Mon, 19 Jun 2006 11:23:59 -0400 (EDT) Received: (qmail 2563 invoked by uid 85); 19 Jun 2006 15:23:03 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.155.81):. Processed in 0.207799 secs); 19 Jun 2006 15:23:03 -0000 Received: from p54969b51.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.155.81) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 19 Jun 2006 15:23:03 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:22:57 +0200 Message-Id: <1150730577.5245.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:24:07 -0000 Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl@redhat.com Mon Jun 19 11:55:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11E2B3B0924 for ; Mon, 19 Jun 2006 11:55:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18742-04 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9EBE23B03A9 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsBQf010743; Mon, 19 Jun 2006 11:54:11 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsAf3026315; Mon, 19 Jun 2006 11:54:10 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFs9M3009507; Mon, 19 Jun 2006 11:54:10 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:54:09 +0200 Message-Id: <1150732450.16397.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:55:11 -0000 On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl@redhat.com Tue Jun 20 04:09:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8B05B3B027F for ; Tue, 20 Jun 2006 04:09:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01941-05 for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 251463B027D for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K8916A009982; Tue, 20 Jun 2006 04:09:01 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K891t6001277; Tue, 20 Jun 2006 04:09:01 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K890Lx026400; Tue, 20 Jun 2006 04:09:00 -0400 Subject: Re: Overlapping icons, again From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Tue, 20 Jun 2006 10:09:00 +0200 Message-Id: <1150790940.16397.21.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 08:09:53 -0000 On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf@cbk.poznan.pl Tue Jun 20 09:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CA3763B044D for ; Tue, 20 Jun 2006 09:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17248-03 for ; Tue, 20 Jun 2006 09:13:42 -0400 (EDT) Received: from goliath.sylaba.poznan.pl (goliath.sylaba.poznan.pl [193.151.36.3]) by menubar.gnome.org (Postfix) with ESMTP id 25DD03B02A4 for ; Tue, 20 Jun 2006 09:13:41 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 97AC818D1E4; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from goliath.sylaba.poznan.pl ([127.0.0.1]) by localhost (goliath.sylaba.poznan.pl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 89603-01-62; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (ip-83-238-212-180.netia.com.pl [83.238.212.180]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 2C66318D1D2; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (venus.local.navi.pl [192.168.1.10]) by venus.local.navi.pl (8.13.1/8.13.1) with ESMTP id k5KDBxws022710; Tue, 20 Jun 2006 15:12:09 +0200 Subject: Re: New permissions page From: Olaf =?iso-8859-2?Q?Fr=B1czyk?= To: Alexander Larsson In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:11:58 +0200 Message-Id: <1150809118.17794.51.camel@venus.local.navi.pl> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at sylaba.poznan.pl X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.783 tagged_above=-999 required=2 tests=[AWL=-0.537, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_FAIL=1.142, TW_RW=0.077] X-Spam-Score: -1.783 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 13:13:45 -0000 On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf FrÄ…czyk From alexl@redhat.com Tue Jun 20 10:12:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2BAB13B02A4 for ; Tue, 20 Jun 2006 10:12:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19006-06 for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 478C83B03CF for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdm3v023018; Tue, 20 Jun 2006 09:39:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdmHs006573; Tue, 20 Jun 2006 09:39:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdk56015503; Tue, 20 Jun 2006 09:39:47 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Olaf =?UTF-8?Q?Fr=C4=85czyk?= In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:39:46 +0200 Message-Id: <1150810787.16397.40.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.55 tagged_above=-999 required=2 tests=[AWL=-0.026, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_RW=0.077] X-Spam-Score: -2.55 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 14:12:11 -0000 On Tue, 2006-06-20 at 15:11 +0200, Olaf FrÄ…czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris@gnome-de.org Tue Jun 20 13:59:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0F8003B00DD for ; Tue, 20 Jun 2006 13:59:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02118-05 for ; Tue, 20 Jun 2006 13:59:18 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 1655F3B000C for ; Tue, 20 Jun 2006 13:59:17 -0400 (EDT) Received: (qmail 68748 invoked by uid 85); 20 Jun 2006 17:58:56 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.204.200):. Processed in 2.796389 secs); 20 Jun 2006 17:58:56 -0000 Received: from p5496ccc8.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.204.200) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 20 Jun 2006 17:58:53 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Content-Type: multipart/mixed; boundary="=-bgJ4fvimCkwAPOVjBPdI" Date: Tue, 20 Jun 2006 19:58:49 +0200 Message-Id: <1150826329.5240.5.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.471 tagged_above=-999 required=2 tests=[AWL=-0.103, BAYES_00=-2.599, TW_GD=0.077, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.471 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 17:59:20 -0000 --=-bgJ4fvimCkwAPOVjBPdI Content-Type: text/plain Content-Transfer-Encoding: 7bit Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair --=-bgJ4fvimCkwAPOVjBPdI Content-Disposition: attachment; filename=nautilus-sm3.diff Content-Type: text/x-patch; name=nautilus-sm3.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.227 diff -u -p -r1.227 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 14:19:55 -0000 1.227 +++ libnautilus-private/nautilus-global-preferences.c 20 Jun 2006 17:52:00 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.133 diff -u -p -r1.133 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 14:19:55 -0000 1.133 +++ libnautilus-private/nautilus-global-preferences.h 20 Jun 2006 17:52:01 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 20 Jun 2006 17:52:06 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 20 Jun 2006 17:52:18 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -615,8 +621,13 @@ nautilus_application_startup (NautilusAp Nautilus_Shell_open_windows (shell, url_list, corba_startup_id, corba_geometry, browser_window, &ev); CORBA_free (url_list); } else if (!no_default_window) { + g_assert (session_to_load == NULL); Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1140,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1173,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1327,263 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[3] = { NULL }; + + argv[0] = "nautilus"; + + argv[2] = save_session_to_file (); + if (argv[2] != NULL) { + argv[1] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[2] != NULL) { + g_free (argv[2]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 20 Jun 2006 17:52:18 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 20 Jun 2006 17:52:20 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,9 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + /* Translators: --no-default-window is a nautilus command line parameter, don't modify it. */ + N_("Load a saved session from the specified file. Implies \"--no-default-window\"."), N_("FILENAME") }, { NULL } }; @@ -243,6 +247,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -262,6 +267,10 @@ main (int argc, char *argv[]) GNOME_PARAM_HUMAN_READABLE_NAME, _("Nautilus"), NULL); + if (session_to_load != NULL) { + no_default_window = TRUE; + } + /* Do this here so that gdk_display is initialized */ if (startup_id_copy == NULL) { /* Create a fake one containing a timestamp that we can use */ @@ -349,6 +358,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 20 Jun 2006 17:52:25 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 20 Jun 2006 17:52:25 -0000 @@ -17,6 +17,7 @@ module Nautilus { void stop_desktop (); void quit (); void restart (); + void load_session (in string filename); }; }; Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 20 Jun 2006 17:52:26 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 20 Jun 2006 17:52:31 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 20 Jun 2006 17:52:36 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 20 Jun 2006 17:52:37 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 20 Jun 2006 17:52:43 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-bgJ4fvimCkwAPOVjBPdI-- From alexl@redhat.com Wed Jun 21 03:27:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 58AA43B0D06 for ; Wed, 21 Jun 2006 03:27:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16837-02 for ; Wed, 21 Jun 2006 03:27:06 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C69353B041C for ; Wed, 21 Jun 2006 03:27:05 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7R0RA028083; Wed, 21 Jun 2006 03:27:00 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QuFv031841; Wed, 21 Jun 2006 03:26:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QrI9014055; Wed, 21 Jun 2006 03:26:55 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150826329.5240.5.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 09:26:53 +0200 Message-Id: <1150874813.16397.58.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 07:27:07 -0000 On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > The session restart command includes > > > "--no-default-window" (nautilus-application.c:save_session). > > > > I guess that is good enough, although we could also always do that when > > specifying a session. Its unlikely that people would use the session > > switch manually though, so it doesn't really matter. > > New patch attached, which takes into account your other worthy > suggestions and makes --load-session imply presence of > --no-default-window. Looks good to commit then. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish sweet-toothed grifter from the 'hood. She's a violent impetuous bounty hunter who dreams of becoming Elvis. They fight crime! From carey@internode.on.net Tue Jun 20 08:48:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 355CC3B04D7 for ; Tue, 20 Jun 2006 08:48:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15989-01 for ; Tue, 20 Jun 2006 08:48:52 -0400 (EDT) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by menubar.gnome.org (Postfix) with ESMTP id 42D563B0510 for ; Tue, 20 Jun 2006 08:48:51 -0400 (EDT) Received: from [192.168.1.24] (ppp7-187.lns1.syd7.internode.on.net [59.167.7.187]) by smtp3.adl2.internode.on.net (8.13.6/8.13.5) with ESMTP id k5KCll85011167 for ; Tue, 20 Jun 2006 22:17:48 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org Content-Type: text/plain Date: Tue, 20 Jun 2006 22:47:47 +1000 Message-Id: <1150807667.5243.53.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-Mailman-Approved-At: Wed, 21 Jun 2006 08:27:09 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 12:48:53 -0000 Hi, I have remote drives mounted via NFS/SMB/etc on my laptops, and due to these remote directories being mounted, nautilus thinks they are local, and tries to generate previews for everything (very much not fun over a 256kbit or 512kbit uplink). Anyone know if there is a gconf setting or some way to get nautilus to be smarter about this and detect remote directories automatically (ie. partition not local, so therefore remote, then don't show preview)? Or at the least, a way to manually disable previews on a per-directory basis? Any ideas are appreciated. From chris@gnome-de.org Wed Jun 21 12:26:19 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 942C13B0F02 for ; Wed, 21 Jun 2006 12:26:19 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20942-09 for ; Wed, 21 Jun 2006 12:26:16 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id A4DE83B0FEE for ; Wed, 21 Jun 2006 12:26:15 -0400 (EDT) Received: (qmail 75238 invoked by uid 85); 21 Jun 2006 16:26:09 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.201671 secs); 21 Jun 2006 16:26:09 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 16:26:09 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150874813.16397.58.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> <1150874813.16397.58.camel@greebo> Content-Type: text/plain Date: Wed, 21 Jun 2006 18:25:54 +0200 Message-Id: <1150907154.5245.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:26:19 -0000 Am Mittwoch, den 21.06.2006, 09:26 +0200 schrieb Alexander Larsson: > On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > > > The session restart command includes > > > > "--no-default-window" (nautilus-application.c:save_session). > > > > > > I guess that is good enough, although we could also always do that when > > > specifying a session. Its unlikely that people would use the session > > > switch manually though, so it doesn't really matter. > > > > New patch attached, which takes into account your other worthy > > suggestions and makes --load-session imply presence of > > --no-default-window. > > Looks good to commit then. Done :). -- Christian Neumair From chris@gnome-de.org Wed Jun 21 15:37:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 850B73B0090 for ; Wed, 21 Jun 2006 15:37:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00594-08 for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 40A563B007C for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: (qmail 73397 invoked by uid 85); 21 Jun 2006 19:37:12 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.304044 secs); 21 Jun 2006 19:37:12 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:37:12 -0000 Subject: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-rdcaTTcK9Z9jAJx6/pO4" Date: Wed, 21 Jun 2006 21:37:08 +0200 Message-Id: <1150918628.5245.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:37:28 -0000 --=-rdcaTTcK9Z9jAJx6/pO4 Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch should fix issues where handlers registered with GtkActionGroups override those registered with child widgets, cf. bug 345528 [1]. [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 -- Christian Neumair --=-rdcaTTcK9Z9jAJx6/pO4 Content-Disposition: attachment; filename=nautilus-window-keybindings.diff Content-Type: text/x-patch; name=nautilus-window-keybindings.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.465 diff -u -p -r1.465 nautilus-window.c --- src/nautilus-window.c 21 Jun 2006 16:26:23 -0000 1.465 +++ src/nautilus-window.c 21 Jun 2006 19:31:34 -0000 @@ -742,6 +742,35 @@ nautilus_window_realize (GtkWidget *widg update_cursor (NAUTILUS_WINDOW (widget)); } +/* try to propagate key press event to children before handling + * mnemonics related to action groups. This is for instance relevant + * when the GtkAction file deletion keybinding would be activated + * instead of the rename widget text deletion keybinding. + */ +static gint +nautilus_window_key_press_event (GtkWidget *widget, + GdkEventKey *event) +{ + GtkWindow *window = GTK_WINDOW (widget); + + if (!gtk_window_propagate_key_event (window, event) && + !gtk_window_activate_key (window, event)) { + /* skip GtkWindow handler, directly use GtkWidget method */ + + static GtkWidgetClass *gtk_widget_class = NULL; + if (gtk_widget_class == NULL) { + gtk_widget_class = g_type_class_peek (gtk_widget_get_type ()); + g_assert (gtk_widget_class != NULL); + g_assert (gtk_widget_class->key_press_event != NULL); + } + + return GTK_WIDGET_CLASS (gtk_widget_class)->key_press_event (widget, event); + } + + return TRUE; + +} + /* * Main API */ @@ -1583,6 +1612,7 @@ nautilus_window_class_init (NautilusWind GTK_WIDGET_CLASS (class)->show = nautilus_window_show; GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request; GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize; + GTK_WIDGET_CLASS (class)->key_press_event = nautilus_window_key_press_event; class->add_current_location_to_history_list = real_add_current_location_to_history_list; class->get_title = real_get_title; class->set_title = real_set_title; --=-rdcaTTcK9Z9jAJx6/pO4-- From chris@gnome-de.org Wed Jun 21 15:51:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B0923B00E2 for ; Wed, 21 Jun 2006 15:51:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01297-07 for ; Wed, 21 Jun 2006 15:51:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 566013B01E2 for ; Wed, 21 Jun 2006 15:50:59 -0400 (EDT) Received: (qmail 5765 invoked by uid 85); 21 Jun 2006 19:50:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 2.075383 secs); 21 Jun 2006 19:50:58 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:50:54 -0000 Subject: Re: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list In-Reply-To: <1150918628.5245.9.camel@localhost.localdomain> References: <1150918628.5245.9.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 21:50:50 +0200 Message-Id: <1150919450.5245.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:51:01 -0000 Am Mittwoch, den 21.06.2006, 21:37 +0200 schrieb Christian Neumair: > The attached patch should fix issues where handlers registered with > GtkActionGroups override those registered with child widgets, cf. bug > 345528 [1]. > > [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 It seems to break keynav in subtle ways, and requires a stricter modifier mask checking for our custom widgets (icon container etc.) which for instance eats alt+arrow key. -- Christian Neumair From patrick.jacquotf@free.fr Wed Jun 21 17:59:06 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4E9CA3B04CB for ; Wed, 21 Jun 2006 17:59:06 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08416-10 for ; Wed, 21 Jun 2006 17:59:05 -0400 (EDT) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by menubar.gnome.org (Postfix) with ESMTP id C303B3B0429 for ; Wed, 21 Jun 2006 17:59:04 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp4-g19.free.fr (Postfix) with ESMTP id CF45454943; Wed, 21 Jun 2006 23:59:01 +0200 (CEST) Subject: Re: Nautilus remote previews From: Patrick Jacquot To: Carey O'Shea In-Reply-To: <1150807667.5243.53.camel@carey-laptop> References: <1150807667.5243.53.camel@carey-laptop> Content-Type: text/plain; charset=utf-8 Date: Wed, 21 Jun 2006 23:58:55 +0200 Message-Id: <1150927136.12639.8.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.5) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.578 tagged_above=-999 required=2 tests=[AWL=0.021, BAYES_00=-2.599] X-Spam-Score: -2.578 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 21:59:06 -0000 Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > Hi, > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > these remote directories being mounted, nautilus thinks they are local, > and tries to generate previews for everything (very much not fun over a > 256kbit or 512kbit uplink). > > Anyone know if there is a gconf setting or some way to get nautilus to > be smarter about this and detect remote directories automatically (ie. > partition not local, so therefore remote, then don't show preview)? > > Or at the least, a way to manually disable previews on a per-directory > basis? > > Any ideas are appreciated. > > In the Nautilus preferences, tab "previews", you can ask the previews for "only local files"; separately for sound files and for "other previews" i.e. images. There are three choices for each category: _ never - always - for local files only HTH -- Patrick From carey@internode.on.net Thu Jun 22 02:11:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7BCC3B02D2 for ; Thu, 22 Jun 2006 02:11:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32425-06 for ; Thu, 22 Jun 2006 02:11:17 -0400 (EDT) Received: from ash25e.internode.on.net (ash25e.internode.on.net [203.16.214.182]) by menubar.gnome.org (Postfix) with ESMTP id 0FB013B0234 for ; Thu, 22 Jun 2006 02:11:16 -0400 (EDT) Received: from [192.168.1.2] (ppp19-139.lns2.syd7.internode.on.net [59.167.19.139]) by ash25e.internode.on.net (8.13.6/8.13.5) with ESMTP id k5M6BEqD069510 for ; Thu, 22 Jun 2006 15:41:14 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Re: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org In-Reply-To: <1150927136.12639.8.camel@proton> References: <1150807667.5243.53.camel@carey-laptop> <1150927136.12639.8.camel@proton> Content-Type: text/plain; charset=UTF-8 Date: Thu, 22 Jun 2006 16:11:13 +1000 Message-Id: <1150956674.22582.4.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:11:20 -0000 Thanks for your reply. My problem is that the "Local Files Only" option does not work with remotely mounted SMB directories. Is this problem known? Regards, Carey. On Wed, 2006-06-21 at 23:58 +0200, Patrick Jacquot wrote: > Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > > Hi, > > > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > > these remote directories being mounted, nautilus thinks they are local, > > and tries to generate previews for everything (very much not fun over a > > 256kbit or 512kbit uplink). > > > > Anyone know if there is a gconf setting or some way to get nautilus to > > be smarter about this and detect remote directories automatically (ie. > > partition not local, so therefore remote, then don't show preview)? > > > > Or at the least, a way to manually disable previews on a per-directory > > basis? > > > > Any ideas are appreciated. > > > > > In the Nautilus preferences, tab "previews", you can ask the previews > for "only local files"; separately for sound files and for > "other previews" i.e. images. There are three choices for each category: > _ never > - always > - for local files only > HTH From alan.gibson@gmail.com Thu Jun 22 02:26:00 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4B0F33B02AB for ; Thu, 22 Jun 2006 02:26:00 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01065-01 for ; Thu, 22 Jun 2006 02:25:59 -0400 (EDT) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by menubar.gnome.org (Postfix) with ESMTP id 6C3993B026A for ; Thu, 22 Jun 2006 02:25:58 -0400 (EDT) Received: by nf-out-0910.google.com with SMTP id h2so219295nfe for ; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.241.6 with SMTP id o6mr1278015nfh; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.231.16 with HTTP; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Message-ID: Date: Wed, 21 Jun 2006 23:25:57 -0700 From: "Alan Gibson" To: nautilus-list@gnome.org Subject: not landing in SFTP home directory MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:26:00 -0000 hello all. first post, good to be here. gnome, and by extension nautilus, are excellent apps. now to the problem: when i access an SFTP server added via "Connect to Server..." the default directory is the root of the server, not my home directory. the same operation with `sftp` lands me in my home directory. this behavior makes "connect to server" unusable for many users. this was filed as a bug, along with another problem, here: http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. anyone have any idea of the status of this, or if it this behavior is going to stay this way? thanks much, alan From alexl@redhat.com Thu Jun 22 03:43:59 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CED983B018C for ; Thu, 22 Jun 2006 03:43:59 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05592-05 for ; Thu, 22 Jun 2006 03:43:57 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 025A73B021B for ; Thu, 22 Jun 2006 03:43:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7huku029640; Thu, 22 Jun 2006 03:43:56 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7hugX028990; Thu, 22 Jun 2006 03:43:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7ht6g030438; Thu, 22 Jun 2006 03:43:55 -0400 Subject: Re: not landing in SFTP home directory From: Alexander Larsson To: Alan Gibson In-Reply-To: References: Content-Type: text/plain Date: Thu, 22 Jun 2006 09:43:54 +0200 Message-Id: <1150962235.16397.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 07:44:00 -0000 On Wed, 2006-06-21 at 23:25 -0700, Alan Gibson wrote: > hello all. first post, good to be here. gnome, and by extension > nautilus, are excellent apps. > > now to the problem: > > when i access an SFTP server added via "Connect to Server..." the > default directory is the root of the server, not my home directory. > the same operation with `sftp` lands me in my home directory. this > behavior makes "connect to server" unusable for many users. > > this was filed as a bug, along with another problem, here: > http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed > against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. > > anyone have any idea of the status of this, or if it this behavior is > going to stay this way? Its clearly a bug, so hopefully it'll get fixed eventually. The reason its not fixed is the standard "not enough resources" one. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a gun-slinging crooked card sharp plagued by the memory of his family's brutal murder. She's a provocative belly-dancing soap star married to the Mob. They fight crime! From chris@gnome-de.org Thu Jun 22 16:19:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 6CB943B0357 for ; Thu, 22 Jun 2006 16:19:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23663-07 for ; Thu, 22 Jun 2006 16:19:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 036763B0859 for ; Thu, 22 Jun 2006 16:18:04 -0400 (EDT) Received: (qmail 80585 invoked by uid 85); 22 Jun 2006 20:17:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.147.150):. Processed in 3.06236 secs); 22 Jun 2006 20:17:58 -0000 Received: from p54969396.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.147.150) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 22 Jun 2006 20:17:55 -0000 Subject: [PATCH] allow to drop URIs, URLs and text to subfolders From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-wko5hNaIXKFzt/OLy/jx" Date: Thu, 22 Jun 2006 22:17:51 +0200 Message-Id: <1151007472.19595.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 20:19:11 -0000 --=-wko5hNaIXKFzt/OLy/jx Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch considers subfolders as drop targets for non-GNOME Icon List drag data that refers to files. -- Christian Neumair --=-wko5hNaIXKFzt/OLy/jx Content-Disposition: attachment; filename=nautilus-dnd.diff Content-Type: text/x-patch; name=nautilus-dnd.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-file-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.c,v retrieving revision 1.7 diff -u -p -r1.7 nautilus-file-dnd.c --- libnautilus-private/nautilus-file-dnd.c 12 Dec 2005 16:59:10 -0000 1.7 +++ libnautilus-private/nautilus-file-dnd.c 22 Jun 2006 19:52:31 -0000 @@ -32,19 +32,14 @@ #include #include -gboolean -nautilus_drag_can_accept_item (NautilusFile *drop_target_item, - const char *item_uri) +static gboolean +nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; - gboolean res; - - if (nautilus_file_matches_uri (drop_target_item, item_uri)) { - /* can't accept itself */ - return FALSE; - } - + if (nautilus_file_is_directory (drop_target_item)) { + gboolean res; + /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); @@ -68,7 +63,19 @@ nautilus_drag_can_accept_item (NautilusF return FALSE; } - + +gboolean +nautilus_drag_can_accept_item (NautilusFile *drop_target_item, + const char *item_uri) +{ + if (nautilus_file_matches_uri (drop_target_item, item_uri)) { + /* can't accept itself */ + return FALSE; + } + + return nautilus_drag_can_accept_files (drop_target_item); +} + gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items) @@ -92,6 +99,39 @@ nautilus_drag_can_accept_items (Nautilus } return TRUE; +} + +gboolean +nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items) +{ + switch (drag_type) { + case NAUTILUS_ICON_DND_GNOME_ICON_LIST: + return nautilus_drag_can_accept_items (drop_target_item, items); + + case NAUTILUS_ICON_DND_URI_LIST: + case NAUTILUS_ICON_DND_URL: + case NAUTILUS_ICON_DND_TEXT: + return nautilus_drag_can_accept_files (drop_target_item); + + case NAUTILUS_ICON_DND_KEYWORD: + return TRUE; + + case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: + return FALSE; + + /* TODO return TRUE for folders as soon as drop handling is implemented */ + case NAUTILUS_ICON_DND_COLOR: + case NAUTILUS_ICON_DND_BGIMAGE: + case NAUTILUS_ICON_DND_RESET_BACKGROUND: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } + } void Index: libnautilus-private/nautilus-file-dnd.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.h,v retrieving revision 1.5 diff -u -p -r1.5 nautilus-file-dnd.h --- libnautilus-private/nautilus-file-dnd.h 22 Feb 2002 18:54:15 -0000 1.5 +++ libnautilus-private/nautilus-file-dnd.h 22 Jun 2006 19:52:31 -0000 @@ -25,6 +25,7 @@ #ifndef NAUTILUS_FILE_DND_H #define NAUTILUS_FILE_DND_H +#include #include #define NAUTILUS_FILE_DND_ERASE_KEYWORD "erase" @@ -33,6 +34,9 @@ gboolean nautilus_drag_can_accept_item const char *item_uri); gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items); +gboolean nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items); void nautilus_drag_file_receive_dropped_keyword (NautilusFile *file, const char *keyword); Index: libnautilus-private/nautilus-icon-container.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v retrieving revision 1.415 diff -u -p -r1.415 nautilus-icon-container.c --- libnautilus-private/nautilus-icon-container.c 15 May 2006 22:55:24 -0000 1.415 +++ libnautilus-private/nautilus-icon-container.c 22 Jun 2006 19:53:16 -0000 @@ -4596,8 +4604,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4609,8 +4618,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4622,8 +4632,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: libnautilus-private/nautilus-icon-container.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.h,v retrieving revision 1.92 diff -u -p -r1.92 nautilus-icon-container.h --- libnautilus-private/nautilus-icon-container.h 15 May 2006 22:55:24 -0000 1.92 +++ libnautilus-private/nautilus-icon-container.h 22 Jun 2006 19:53:18 -0000 Index: libnautilus-private/nautilus-icon-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-dnd.c,v retrieving revision 1.154 diff -u -p -r1.154 nautilus-icon-dnd.c --- libnautilus-private/nautilus-icon-dnd.c 15 May 2006 22:55:24 -0000 1.154 +++ libnautilus-private/nautilus-icon-dnd.c 22 Jun 2006 19:53:21 -0000 @@ -84,6 +84,10 @@ static void dnd_highlight_queue_redr static GtkTargetList *drop_types_list = NULL; static GtkTargetList *drop_types_list_root = NULL; +static char * nautilus_icon_container_find_drop_target (NautilusIconContainer *container, + GdkDragContext *context, + int x, int y, gboolean *icon_hit); + static EelCanvasItem * create_selection_shadow (NautilusIconContainer *container, GList *list) @@ -618,44 +622,65 @@ receive_dropped_keyword (NautilusIconCon /* handle dropped url */ static void -receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y) +receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragContext *context, int x, int y) { + char *drop_target; + if (encoded_url == NULL) { return; } + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_url", encoded_url, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped uri list */ static void -receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y) +receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragContext *context, int x, int y) { + char *drop_target; + if (uri_list == NULL) { return; } - + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_uri_list", uri_list, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped text */ static void -receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragAction action, int x, int y) +receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragContext *context, int x, int y) { + char *drop_target; + if (text == NULL) { return; } + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); g_signal_emit_by_name (container, "handle_text", text, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } static int @@ -843,7 +868,7 @@ handle_local_move (NautilusIconContainer nautilus_icon_container_add (container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - FALSE); + FALSE, FALSE); icon = nautilus_icon_container_get_icon_by_uri (container, item->uri); @@ -939,8 +964,11 @@ nautilus_icon_container_find_drop_target NautilusFile *file; char *icon_uri; - *icon_hit = FALSE; - if (container->details->dnd_info->drag_info.selection_list == NULL) { + if (icon_hit) { + *icon_hit = FALSE; + } + + if (!container->details->dnd_info->drag_info.got_drop_data_type) { return NULL; } @@ -959,8 +987,9 @@ nautilus_icon_container_find_drop_target if (icon_uri != NULL) { file = nautilus_file_get (icon_uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { /* the item we dropped our selection on cannot accept the items, * do the same thing as if we just dropped the items on the canvas */ @@ -973,11 +1002,16 @@ nautilus_icon_container_find_drop_target } if (drop_target_icon == NULL) { - *icon_hit = FALSE; + if (icon_hit) { + *icon_hit = FALSE; + } + return get_container_uri (container); } - *icon_hit = TRUE; + if (icon_hit) { + *icon_hit = TRUE; + } return nautilus_icon_container_get_icon_drop_target_uri (container, drop_target_icon); } @@ -1177,10 +1211,6 @@ nautilus_icon_dnd_update_drop_target (Na char *uri; g_assert (NAUTILUS_IS_ICON_CONTAINER (container)); - if ((container->details->dnd_info->drag_info.selection_list == NULL) - && (container->details->dnd_info->drag_info.data_type != NAUTILUS_ICON_DND_KEYWORD)) { - return; - } canvas_widget_to_world (EEL_CANVAS (container), x, y, &world_x, &world_y); @@ -1199,8 +1229,9 @@ nautilus_icon_dnd_update_drop_target (Na file = nautilus_file_get (uri); g_free (uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { icon = NULL; } @@ -1642,20 +1673,20 @@ drag_data_received_callback (GtkWidget * case NAUTILUS_ICON_DND_URL: receive_dropped_url (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_URI_LIST: receive_dropped_uri_list (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_TEXT: tmp = gtk_selection_data_get_text (data); receive_dropped_text (NAUTILUS_ICON_CONTAINER (widget), - (char *) tmp, context->action, x, y); + (char *) tmp, context, x, y); success = TRUE; g_free (tmp); break; Index: libnautilus-private/nautilus-marshal.list =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-marshal.list,v retrieving revision 1.11 diff -u -p -r1.11 nautilus-marshal.list --- libnautilus-private/nautilus-marshal.list 12 Dec 2005 16:59:10 -0000 1.11 +++ libnautilus-private/nautilus-marshal.list 22 Jun 2006 19:53:27 -0000 @@ -16,5 +16,6 @@ VOID:POINTER,POINTER VOID:POINTER,POINTER,POINTER,ENUM,INT,INT VOID:POINTER,STRING VOID:POINTER,STRING,ENUM,INT,INT +VOID:STRING,STRING,ENUM,INT,INT VOID:STRING,ENUM,INT,INT VOID:STRING,STRING Index: libnautilus-private/nautilus-tree-view-drag-dest.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-tree-view-drag-dest.c,v retrieving revision 1.14 diff -u -p -r1.14 nautilus-tree-view-drag-dest.c --- libnautilus-private/nautilus-tree-view-drag-dest.c 27 Feb 2006 21:54:58 -0000 1.14 +++ libnautilus-private/nautilus-tree-view-drag-dest.c 22 Jun 2006 19:53:31 -0000 @@ -306,7 +306,7 @@ get_drop_path (NautilusTreeViewDragDest NautilusFile *file; GtkTreePath *ret; - if (!path) { + if (!path || !dest->details->have_drag_data) { return NULL; } @@ -315,7 +315,9 @@ get_drop_path (NautilusTreeViewDragDest /* Go up the tree until we find a file that can accept a drop */ while (file == NULL /* dummy row */ || - !nautilus_drag_can_accept_items (file, dest->details->drag_list)) { + !nautilus_drag_can_accept_info (file, + dest->details->drag_type, + dest->details->drag_list)) { if (gtk_tree_path_get_depth (ret) == 1) { gtk_tree_path_free (ret); ret = NULL; @@ -333,8 +335,8 @@ get_drop_path (NautilusTreeViewDragDest } static char * -get_drop_target (NautilusTreeViewDragDest *dest, - GtkTreePath *path) +get_drop_target_uri_for_path (NautilusTreeViewDragDest *dest, + GtkTreePath *path) { NautilusFile *file; char *target; @@ -366,7 +368,7 @@ get_drop_action (NautilusTreeViewDragDes switch (dest->details->drag_type) { case NAUTILUS_ICON_DND_GNOME_ICON_LIST : - drop_target = get_drop_target (dest, path); + drop_target = get_drop_target_uri_for_path (dest, path); if (!drop_target) { return 0; @@ -383,9 +385,27 @@ get_drop_action (NautilusTreeViewDragDes return action; case NAUTILUS_ICON_DND_URL: - return nautilus_drag_default_drop_action_for_url (context); + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + action = nautilus_drag_default_drop_action_for_url (context); + + g_free (drop_target); + + return action; case NAUTILUS_ICON_DND_URI_LIST : + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + g_free (drop_target); + return context->suggested_action; case NAUTILUS_ICON_DND_TEXT: @@ -497,24 +517,43 @@ drag_leave_callback (GtkWidget *widget, remove_expand_timeout (dest); } -static void -receive_uris (NautilusTreeViewDragDest *dest, - GdkDragContext *context, - GList *source_uris, - int x, int y) +static char * +get_drop_target_uri_at_pos (NautilusTreeViewDragDest *dest, int x, int y) { char *drop_target; GtkTreePath *path; GtkTreePath *drop_path; GtkTreeViewDropPosition pos; - GdkDragAction action; gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, &path, &pos); drop_path = get_drop_path (dest, path); - drop_target = get_drop_target (dest, drop_path); + drop_target = get_drop_target_uri_for_path (dest, drop_path); + + if (path != NULL) { + gtk_tree_path_free (path); + } + + if (drop_path != NULL) { + gtk_tree_path_free (drop_path); + } + + return drop_target; +} + +static void +receive_uris (NautilusTreeViewDragDest *dest, + GdkDragContext *context, + GList *source_uris, + int x, int y) +{ + char *drop_target; + GdkDragAction action; + + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); if (context->action == GDK_ACTION_ASK) { if (nautilus_drag_selection_includes_special_link (dest->details->drag_list)) { @@ -540,14 +579,6 @@ receive_uris (NautilusTreeViewDragDest * x, y); } - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target); } @@ -583,14 +614,22 @@ receive_dropped_uri_list (NautilusTreeVi GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URI_LIST], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -598,18 +637,24 @@ receive_dropped_text (NautilusTreeViewDr GdkDragContext *context, int x, int y) { + char *drop_target; char *text; if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + text = gtk_selection_data_get_text (dest->details->drag_data); g_signal_emit (dest, signals[HANDLE_TEXT], 0, - (char *) text, + (char *) text, drop_target, context->action, x, y); + g_free (text); + g_free (drop_target); } @@ -618,14 +663,22 @@ receive_dropped_url (NautilusTreeViewDra GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URL], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -634,15 +687,14 @@ receive_dropped_keyword (NautilusTreeVie int x, int y) { char *drop_target_uri; - GtkTreePath *path, *drop_path; NautilusFile *drop_target_file; - gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, - &path, NULL); - - drop_path = get_drop_path (dest, path); + if (!dest->details->drag_data) { + return; + } - drop_target_uri = get_drop_target (dest, drop_path); + drop_target_uri = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target_uri != NULL); drop_target_file = nautilus_file_get (drop_target_uri); @@ -652,15 +704,6 @@ receive_dropped_keyword (NautilusTreeVie nautilus_file_unref (drop_target_file); } - - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target_uri); } @@ -854,8 +897,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -867,8 +911,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -880,8 +925,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.745 diff -u -p -r1.745 fm-directory-view.c --- src/file-manager/fm-directory-view.c 16 Jun 2006 15:40:18 -0000 1.745 +++ src/file-manager/fm-directory-view.c 22 Jun 2006 20:08:33 -0000 @@ -1415,7 +1415,7 @@ action_new_empty_file_callback (GtkActio { g_assert (FM_IS_DIRECTORY_VIEW (callback_data)); - fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL); + fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL, NULL); } static void @@ -4217,36 +4217,45 @@ setup_new_folder_data (FMDirectoryView * static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, + const char *parent_uri, const char *initial_contents) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; + + g_assert (parent_uri != NULL); data = setup_new_folder_data (directory_view); pos = context_menu_to_file_operation_position (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), pos, parent_uri, initial_contents, new_folder_done, data); - - g_free (parent_uri); } void fm_directory_view_new_file (FMDirectoryView *directory_view, + const char *parent_uri, NautilusFile *source) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; char *source_uri; + char *container_uri; + + container_uri = NULL; + if (parent_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (directory_view); + g_assert (container_uri != NULL); + } if (source == NULL) { - fm_directory_view_new_file_with_initial_contents (directory_view, NULL); + fm_directory_view_new_file_with_initial_contents (directory_view, + parent_uri != NULL ? parent_uri : container_uri, + NULL); + g_free (container_uri); return; } @@ -4257,17 +4266,16 @@ fm_directory_view_new_file (FMDirectoryV data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), pos, - parent_uri, + parent_uri != NULL ? parent_uri : container_uri, NULL, source_uri, new_folder_done, data); - g_free (parent_uri); g_free (source_uri); + g_free (container_uri); } /* handle the open command */ @@ -4782,7 +4790,8 @@ extension_action_callback_data_free (Ext { g_object_unref (data->item); nautilus_file_list_free (data->selection); - + g_object_unref (data->view); + g_free (data); } @@ -4826,6 +4835,12 @@ extension_action_slow_mime_types_ready_c g_free (item_name); if (is_valid) { + char *display; + + display = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (data->view))); + g_setenv ("DISPLAY", display, TRUE); + g_free (display); + nautilus_menu_item_activate (data->item); } @@ -4890,7 +4905,7 @@ add_extension_action_for_files (FMDirect data = g_new0 (ExtensionActionCallbackData, 1); data->item = g_object_ref (item); - data->view = view; + data->view = g_object_ref (view); data->selection = nautilus_file_list_copy (files); data->action = action; @@ -5567,7 +5582,7 @@ create_template_callback (GtkAction *act parameters = callback_data; - fm_directory_view_new_file (parameters->directory_view, parameters->file); + fm_directory_view_new_file (parameters->directory_view, NULL, parameters->file); } static void @@ -9632,6 +9647,7 @@ ask_link_action (FMDirectoryView *view) void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9652,10 +9668,13 @@ fm_directory_view_handle_url_drop (FMDir return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } - if (eel_vfs_has_capability (container_uri, + if (eel_vfs_has_capability (target_uri != NULL ? target_uri : container_uri, EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) { eel_show_warning_dialog (_("Drag and drop is not supported."), _("Drag and drop is only supported on local file systems."), @@ -9736,7 +9755,7 @@ fm_directory_view_handle_url_drop (FMDir screen = gtk_widget_get_screen (GTK_WIDGET (view)); screen_num = gdk_screen_get_number (screen); - nautilus_link_local_create (container_uri, + nautilus_link_local_create (target_uri != NULL ? target_uri : container_uri, link_name, link_display_name, "gnome-fs-bookmark", @@ -9758,7 +9777,7 @@ fm_directory_view_handle_url_drop (FMDir uri_list = g_list_append (uri_list, url); fm_directory_view_move_copy_items (uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); g_list_free (uri_list); @@ -9773,6 +9792,7 @@ fm_directory_view_handle_url_drop (FMDir void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9787,8 +9807,11 @@ fm_directory_view_handle_uri_list_drop ( return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } if (action == GDK_ACTION_ASK) { action = nautilus_drag_drop_action_ask @@ -9847,7 +9870,7 @@ fm_directory_view_handle_uri_list_drop ( } fm_directory_view_move_copy_items (real_uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); eel_g_list_free_deep (real_uri_list); @@ -9861,6 +9884,7 @@ fm_directory_view_handle_uri_list_drop ( void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9873,11 +9897,14 @@ fm_directory_view_handle_text_drop (FMDi g_return_if_fail (action == GDK_ACTION_COPY); - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } fm_directory_view_new_file_with_initial_contents ( - view, text); + view, target_uri != NULL ? target_uri : container_uri, text); g_free (container_uri); } Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.144 diff -u -p -r1.144 fm-directory-view.h --- src/file-manager/fm-directory-view.h 30 Mar 2006 19:37:22 -0000 1.144 +++ src/file-manager/fm-directory-view.h 22 Jun 2006 20:08:34 -0000 @@ -404,21 +404,25 @@ gboolean fm_directory_view_should_so void fm_directory_view_update_menus (FMDirectoryView *view); void fm_directory_view_new_folder (FMDirectoryView *view); void fm_directory_view_new_file (FMDirectoryView *view, + const char *parent_uri, NautilusFile *source); void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view); void fm_directory_view_init_view_iface (NautilusViewIface *iface); void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y); Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.323 diff -u -p -r1.323 fm-icon-view.c --- src/file-manager/fm-icon-view.c 15 May 2006 22:55:25 -0000 1.323 +++ src/file-manager/fm-icon-view.c 22 Jun 2006 20:08:41 -0000 @@ -553,7 +553,8 @@ fm_icon_view_add_file (FMDirectoryView * if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2077,7 +2078,8 @@ fm_icon_view_screen_changed (GtkWidget * } else { if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2527,26 +2529,29 @@ create_icon_container (FMIconView *icon_ /* Handles an URL received from Mozilla */ static void icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void icon_view_handle_uri_list (NautilusIconContainer *container, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void icon_view_handle_text (NautilusIconContainer *container, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static char * Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.270 diff -u -p -r1.270 fm-list-view.c --- src/file-manager/fm-list-view.c 24 May 2006 13:20:42 -0000 1.270 +++ src/file-manager/fm-list-view.c 22 Jun 2006 20:08:47 -0000 @@ -1044,26 +1044,28 @@ get_file_for_path_callback (NautilusTree /* Handles an URL received from Mozilla */ static void list_view_handle_url (NautilusTreeViewDragDest *dest, const char *encoded_url, - GdkDragAction action, int x, int y, FMListView *view) + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void list_view_handle_uri_list (NautilusTreeViewDragDest *dest, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void list_view_handle_text (NautilusTreeViewDragDest *dest, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static void --=-wko5hNaIXKFzt/OLy/jx-- From gcgn-nautilus-list@m.gmane.org Fri Jun 23 20:50:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1A1653B016A for ; Fri, 23 Jun 2006 20:50:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14245-10 for ; Fri, 23 Jun 2006 20:50:09 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id D85B93B00E5 for ; Fri, 23 Jun 2006 20:50:08 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FtwLa-00040A-JD for nautilus-list@gnome.org; Sat, 24 Jun 2006 02:50:02 +0200 Received: from grenadine.bebeloup.net ([82.66.18.21]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 Received: from bdelaage by grenadine.bebeloup.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Boris de Laage Subject: [PATCH] nautilus-vcs: use the C locale for LC_TIME with strftime Date: Sat, 24 Jun 2006 02:46:54 +0200 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: grenadine.bebeloup.net User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.145 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_SORBS_WEB=1.456, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -1.145 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 00:50:10 -0000 strftime formats the string according to the current locale, while CVS timestamps are in english. This patch changes the LC_TIME locale before calling strftime. Boris. Index: nautilus-cvs.c =================================================================== RCS file: /cvs/gnome/nautilus-vcs/src/nautilus-cvs.c,v retrieving revision 1.8 diff -u -r1.8 nautilus-cvs.c --- nautilus-cvs.c 19 Nov 2004 18:18:19 -0000 1.8 +++ nautilus-cvs.c 6 Dec 2005 16:29:12 -0000 @@ -128,8 +128,11 @@ struct tm mtime; const GnomeVFSFileInfo *info; char timestamp[512]; + char *locale; + info = nautilus_file_info_get_vfs_file_info (file); + locale = setlocale(LC_TIME, "C"); gmtime_r (&info->mtime, &mtime); if (strftime (timestamp, 512, "%a %b %e %H:%M:%S %Y", @@ -138,6 +141,7 @@ ret = TRUE; } } + setlocale(LC_TIME, locale); } return ret; From alexgearhart@gmail.com Sat Jun 24 02:03:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C39E83B01BF for ; Sat, 24 Jun 2006 02:03:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26437-02 for ; Sat, 24 Jun 2006 02:03:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by menubar.gnome.org (Postfix) with ESMTP id 7481E3B0303 for ; Sat, 24 Jun 2006 02:03:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so156334uge for ; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.140.17 with SMTP id n17mr1525570hud; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.31.6 with HTTP; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Message-ID: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Date: Sat, 24 Jun 2006 02:03:15 -0400 From: "Alex Gearhart" To: nautilus-list@gnome.org Subject: Folder size column MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_33481_11872762.1151128995549" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.91 tagged_above=-999 required=2 tests=[BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -0.91 X-Spam-Level: X-Mailman-Approved-At: Sat, 24 Jun 2006 10:45:26 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 06:03:19 -0000 ------=_Part_33481_11872762.1151128995549 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hey, the folder size column should display the size of the folder, and not how many files are inside. Then it would be easier to see how much space all your folders take up. Instead, the number of files inside should be in a column like "Contents." Thanks, Alex ------=_Part_33481_11872762.1151128995549 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hey, the folder size column should display the size of the folder, and not how many files are inside.   Then it would be easier to see how much space all your folders take up.  Instead, the number of files inside should be in a column like "Contents."

 

Thanks,
Alex

------=_Part_33481_11872762.1151128995549-- From gcgn-nautilus-list@m.gmane.org Sat Jun 24 13:15:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id EA1233B0385 for ; Sat, 24 Jun 2006 13:15:45 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26732-06 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 6D41A3B0121 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FuBio-0007D2-A1 for nautilus-list@gnome.org; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: support truncated long file name? Date: Sat, 24 Jun 2006 18:08:39 +0100 Lines: 30 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:pg4guGpKutI95x3CB8skWP4y+YE= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:15:46 -0000 Dear all, A missing feature in nautilus is truncated long file name. Imagine opening a dir with a lot of long file names such as a dir containing papers that have title as the file name, which a lot academic workers will do. How messy and inconvenient that is! Lately a colleague, a first-time gnome user, has asked for help to configure his nautilus to show tidily a dir of books that he collected. Unfortunately no one could give an answer. He has then been persuaded to change to KDE. As a gnome user for 4 years, I hate to see people leave gnome this way and thus this post. In case you can't try konqueror or xp explorer, here is the feature: In konqueror or xp explorer, long file name will be truncated with ... to indicate the missing part. A popup will show the full file name when mouse is over the item. (Konqueror has this feature for over 2 years) Files in the desktop are treated differently. Full file name is shown for selected item. This feature is available in xp. Apology for my English. Thanks for your time. -- Leon From mpt@myrealbox.com Sat Jun 24 21:32:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 854743B024B for ; Sat, 24 Jun 2006 21:32:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11780-10 for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from leucothea.redline.site5.com (leucothea.redline.site5.com [216.118.97.161]) by menubar.gnome.org (Postfix) with ESMTP id 7AD453B01DD for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from 203-173-178-53.bliink.ihug.co.nz ([203.173.178.53] helo=[10.1.1.5]) by leucothea.redline.site5.com with esmtpsa (TLSv1:RC4-SHA:128) (Exim 4.52) id 1FuJSn-0001jv-Pt; Sat, 24 Jun 2006 21:31:02 -0400 In-Reply-To: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> References: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <1e87f7c2959ea7bc5dbc264d3a1d94c0@myrealbox.com> Content-Transfer-Encoding: quoted-printable From: Matthew Paul Thomas Subject: Re: Folder size column Date: Sun, 25 Jun 2006 13:31:05 +1200 To: nautilus-list List X-Mailer: Apple Mail (2.623) X-Antivirus-Scanner: This message has been scanned by ClamAV. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leucothea.redline.site5.com X-AntiAbuse: Original Domain - gnome.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - myrealbox.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=0.123, BAYES_00=-2.599] X-Spam-Score: -2.476 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 01:32:02 -0000 On Jun 24, 2006, at 6:03 PM, Alex Gearhart wrote: > > Hey, the folder size column should display the size of the folder, and=20= > not how many files are inside. =A0 Then it would be easier to see how=20= > much space all your folders take up.=A0 Instead, the number of files=20= > inside should be in a column like "Contents." > ... You can subscribe to the relevant bug report to be notified of progress=20= in fixing the bug. Cheers --=20 Matthew Paul Thomas http://mpt.net.nz/= From reinouts@gnome.org Sun Jun 25 04:59:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 45E3C3B02C9 for ; Sun, 25 Jun 2006 04:59:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06259-07 for ; Sun, 25 Jun 2006 04:59:28 -0400 (EDT) Received: from smtp13.wxs.nl (smtp13.wxs.nl [195.121.247.4]) by menubar.gnome.org (Postfix) with ESMTP id E0E423B01C5 for ; Sun, 25 Jun 2006 04:59:27 -0400 (EDT) Received: from reinout.rotterdam-cs.com (ip5656924e.speed.planet.nl [86.86.146.78]) by smtp13.wxs.nl (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with SMTP id <0J1E00KI7RLCUO@smtp13.wxs.nl> for nautilus-list@gnome.org; Sun, 25 Jun 2006 10:58:24 +0200 (CEST) Date: Sun, 25 Jun 2006 11:01:02 +0200 From: Reinout van Schouwen Subject: Re: support truncated long file name? To: nautilus-list@gnome.org Message-id: MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) References: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.449 tagged_above=-999 required=2 tests=[AWL=0.015, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.449 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 08:59:31 -0000 Hi Leon, On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > Lately a colleague, a first-time gnome user, has asked for help to > configure his nautilus to show tidily a dir of books that he collected. How did the long filenames cause "untidiness" then? Was he using list view or icon view? > Unfortunately no one could give an answer. He has then been persuaded to > change to KDE. That sounds like a rigorous solution for a relatively insignificant problem, but at least he is still using Free software :-). > In konqueror or xp explorer, long file name will be truncated with ... > to indicate the missing part. A popup will show the full file name when > mouse is over the item. (Konqueror has this feature for over 2 years) Popup tooltips in the GTK tree/list widget are not possible in the current stable releases, however I think they will be part of the upcoming GTK 2.10. I agree that it would be good to use ellipsis (...) for filenames that do not fit in their column, could you file a bug about this at http://bugzilla.gnome.org/ so that the developers don't forget about it? regards, -- Reinout van Schouwen From gcgn-nautilus-list@m.gmane.org Sun Jun 25 07:19:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8717D3B008F for ; Sun, 25 Jun 2006 07:19:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11101-06 for ; Sun, 25 Jun 2006 07:19:24 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 04FB23B00D9 for ; Sun, 25 Jun 2006 07:19:23 -0400 (EDT) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FuSda-0004qq-Et for nautilus-list@gnome.org; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: Re: support truncated long file name? Date: Sun, 25 Jun 2006 12:18:35 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:M1ThUfhXtUcoA+syhkILCbb1hws= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 11:19:27 -0000 Reinout van Schouwen writes: > Hi Leon, > > On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > >> Lately a colleague, a first-time gnome user, has asked for help to >> configure his nautilus to show tidily a dir of books that he collected. > > How did the long filenames cause "untidiness" then? Was he using list view > or icon view? > Icon view. Sometimes list view is not an option for example on the desktop. > >> In konqueror or xp explorer, long file name will be truncated with ... >> to indicate the missing part. A popup will show the full file name when >> mouse is over the item. (Konqueror has this feature for over 2 years) > > Popup tooltips in the GTK tree/list widget are not possible in the current > stable releases, however I think they will be part of the upcoming GTK > 2.10. I agree that it would be good to use ellipsis (...) for filenames > that do not fit in their column, could you file a bug about this at > http://bugzilla.gnome.org/ so that the developers don't forget about it? Funny story, this bug has been filed slightly more than 4 years ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 Can somebody raise the priority of the bug? As a DE values usability and simplicity this much as gnome, it will be a shame to see this bug hang around for another 4 year. > > regards, > > -- > Reinout van Schouwen -- Leon From ebassi@gmail.com Mon Jun 26 06:28:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11F873B03A8 for ; Mon, 26 Jun 2006 06:28:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09876-02 for ; Mon, 26 Jun 2006 06:28:36 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.170]) by menubar.gnome.org (Postfix) with ESMTP id 6146C3B030F for ; Mon, 26 Jun 2006 06:28:35 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so760879uge for ; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: by 10.67.26.7 with SMTP id d7mr4811743ugj; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: from ?10.0.10.50? ( [147.83.156.10]) by mx.gmail.com with ESMTP id k2sm4822536ugf.2006.06.26.03.28.30; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Subject: Re: support truncated long file name? From: Emmanuele Bassi To: Leon In-Reply-To: References: Content-Type: text/plain Date: Mon, 26 Jun 2006 11:28:29 +0100 Message-Id: <1151317709.6877.2.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.4 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, SPF_PASS=-0.001] X-Spam-Score: -2.4 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 10:28:39 -0000 Hi; On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: > > Popup tooltips in the GTK tree/list widget are not possible in the current > > stable releases, however I think they will be part of the upcoming GTK > > 2.10. Unfortunately, no. They didn't make in time for the 2.10 schedule. > I agree that it would be good to use ellipsis (...) for filenames > > that do not fit in their column, could you file a bug about this at > > http://bugzilla.gnome.org/ so that the developers don't forget about it? > > Funny story, this bug has been filed slightly more than 4 years > ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 > > Can somebody raise the priority of the bug? The GTK developers are pretty well aware of the situation. Unfortunately, providing support for tooltips inside GtkTreeView is a tricky thing to do, and requires a major overhauling of the tooltips API. This means introducing a major change in every application using tooltips, so we need to do things right. > As a DE values usability > and simplicity this much as gnome, it will be a shame to see this bug > hang around for another 4 year. Faster work implies giving a hand with code. If you want, you can contact Kristian, which is working on this issue, and help him by writing some code yourself. Ciao, Emmanuele. -- Emmanuele Bassi, E: ebassi@gmail.com W: http://www.emmanuelebassi.net B: http://log.emmanuelebassi.net From milton.yates@resel.fr Mon Jun 26 11:20:22 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 656393B045D for ; Mon, 26 Jun 2006 11:20:22 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27783-06 for ; Mon, 26 Jun 2006 11:20:20 -0400 (EDT) Received: from smtp2-g19.free.fr (smtp2-g19.free.fr [212.27.42.28]) by menubar.gnome.org (Postfix) with ESMTP id E856A3B0135 for ; Mon, 26 Jun 2006 11:20:19 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp2-g19.free.fr (Postfix) with ESMTP id B299273276 for ; Mon, 26 Jun 2006 17:20:18 +0200 (CEST) Subject: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org Content-Type: text/plain Date: Mon, 26 Jun 2006 17:20:18 +0200 Message-Id: <1151335218.3123.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 15:20:22 -0000 Hi, I'm often coming across the following dialog box: "Cannot XXX. The filename "XXX" indicates that this file is of type "YYY". The contents of the file indicate that the file is of type "ZZZ". If you open this file, the file might present a security risk to your system." Often on WMV files, it says it's ASF, but it's not. Knowing that file content detection might fail, I'd like to know if there is any way to prevent Nautilus from actually doing this detection. The user should be able to deactivate it, as I can get quite annoying. Is that possible ? Thanks, Milton. From nshmyrev@yandex.ru Tue Jun 27 04:14:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 250FE3B0204 for ; Tue, 27 Jun 2006 04:14:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15482-05 for ; Tue, 27 Jun 2006 04:14:13 -0400 (EDT) Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18]) by menubar.gnome.org (Postfix) with ESMTP id 106663B02D1 for ; Tue, 27 Jun 2006 04:14:12 -0400 (EDT) Received: from ppp83-237-255-208.pppoe.mtu-net.ru ([83.237.255.208]:38893 "EHLO gnome.local" smtp-auth: "nshmyrev" TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3376165AbWF0IOK (ORCPT ); Tue, 27 Jun 2006 12:14:10 +0400 X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: nshmyrev Subject: Re: Nautilus and file format detection... From: "Nickolay V. Shmyrev" To: Milton YATES In-Reply-To: <1151335218.3123.16.camel@localhost> References: <1151335218.3123.16.camel@localhost> Content-Type: text/plain; charset=utf-8 Date: Tue, 27 Jun 2006 12:14:13 +0400 Message-Id: <1151396053.11042.5.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.315 tagged_above=-999 required=2 tests=[AWL=0.150, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_PASS=-0.001] X-Spam-Score: -2.315 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 08:14:28 -0000 Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > Hi, > > I'm often coming across the following dialog box: > "Cannot XXX. > The filename "XXX" indicates that this file is of > type "YYY". The contents of the file indicate > that the file is of type "ZZZ". If you open this file, > the file might present a security risk to your system." > > Often on WMV files, it says it's ASF, but it's not. > > Knowing that file content detection might fail, I'd like to know > if there is any way to prevent Nautilus from actually doing this detection. > The user should be able to deactivate it, as I can get quite annoying. > Is that possible ? > As far as I know there is no way to disable dialog detection, but the problem with this known "dialog of doom" was solved long time ago. Probably, upgrade will help you with your problems. From milton.yates@resel.fr Tue Jun 27 13:47:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8740F3B01EE for ; Tue, 27 Jun 2006 13:47:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 10834-05 for ; Tue, 27 Jun 2006 13:47:01 -0400 (EDT) Received: from smtp6-g19.free.fr (smtp6-g19.free.fr [212.27.42.36]) by menubar.gnome.org (Postfix) with ESMTP id E0B2B3B0163 for ; Tue, 27 Jun 2006 13:47:00 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp6-g19.free.fr (Postfix) with ESMTP id E8A1418719 for ; Tue, 27 Jun 2006 19:46:27 +0200 (CEST) Subject: Re: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org In-Reply-To: <1151396053.11042.5.camel@gnome.local> References: <1151335218.3123.16.camel@localhost> <1151396053.11042.5.camel@gnome.local> Content-Type: text/plain; charset=UTF-8 Date: Tue, 27 Jun 2006 19:46:21 +0200 Message-Id: <1151430381.16816.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 17:47:02 -0000 Le mardi 27 juin 2006 à 12:14 +0400, Nickolay V. Shmyrev a écrit : > Ð’ Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > > I'm often coming across the following dialog box: > > "Cannot XXX. > > The filename "XXX" indicates that this file is of > > type "YYY". The contents of the file indicate > > that the file is of type "ZZZ". If you open this file, > > the file might present a security risk to your system." > > > > Often on WMV files, it says it's ASF, but it's not. > As far as I know there is no way to disable dialog detection, but the > problem with this known "dialog of doom" was solved long time ago. > Probably, upgrade will help you with your problems. I use nautilus 2.12.2 in a gnome 2.12.3. This almost only happens on WMV files which are detected as ASF. From kristoffer.lunden@gmail.com Tue Jun 27 15:16:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2F2113B02A8 for ; Tue, 27 Jun 2006 15:16:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14131-01 for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: from nz-out-0102.google.com (nz-out-0102.google.com [64.233.162.204]) by menubar.gnome.org (Postfix) with ESMTP id 8C3C63B03AC for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: by nz-out-0102.google.com with SMTP id i1so2361752nzh for ; Tue, 27 Jun 2006 12:16:03 -0700 (PDT) Received: by 10.36.178.19 with SMTP id a19mr1156199nzf; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Received: by 10.36.132.19 with HTTP; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Message-ID: Date: Tue, 27 Jun 2006 21:16:02 +0200 From: "=?UTF-8?Q?Kristoffer_Lund=C3=A9n?=" To: "nautilus-list@gnome.org" Subject: Possible to recognize a dropped ISO into the creator? MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_9323_19651519.1151435762818" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.45 tagged_above=-999 required=2 tests=[AWL=-0.626, BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, HTML_10_20=1.351, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.45 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 19:16:34 -0000 ------=_Part_9323_19651519.1151435762818 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sCgpqdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQgaXQgYWdh aW4uIDopCgpJIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlrZSB0byBidXJuLiBJ IGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwCnBvcHMgYSBxdWVzdGlvbiBpZiBJIHdhbnQgdG8g aWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3IKYnVybmluZyBhbiBJ U08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJlIHByZXNlbnQgdG9v LCBvcgp3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29nbml6ZSB0aGF0IGFu IElTTyBpcyBiZWluZyBkcm9wcGVkCmFuZCBhc2sgaWYgSSB3YW50IHRvIG1ha2UgYW4gSVNPIG9y IGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KCkFwcGFyZW50bHkgTmF1dGlsdXMga25v d3MgaXQncyBhbiBJU086IGFzIGl0IGlzIG5vdywgSSBoYXZlIHRvIGdvIHRvIHRoZQpJU08sIHJp Z2h0LWNsaWNrIGFuZCBjaG9vc2UgdG8gYnVybiBpdCBmcm9tIHRoZXJlLiBJJ2QgcmF0aGVyIGhh dmUgaXQgbW9yZQp1bmlmaWVkLCBhcyB0aGUgcXVlc3Rpb24gaXMgYXNrZWQgYW55d2F5cyB3aGVu IEkgcHV0IHRoZSBDRCBpbi4KCi0tIEtyaXN0b2ZmZXIKCi0tIApLcmlzdG9mZmVyIEx1bmTDqW4K 4pyJIGtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbQrinIkga3Jpc3RvZmZlci5sdW5kZW5AZ2Ft ZW1ha2VyLm51Cmh0dHA6Ly93d3cuZ2FtZW1ha2VyLm51LwrimI4gMDcwNCA0OCA5OCA3Nwo= ------=_Part_9323_19651519.1151435762818 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sPGJyPjxicj5qdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQg aXQgYWdhaW4uIDopPGJyPjxicj5JIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlr ZSB0byBidXJuLiBJIGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwIHBvcHMgYSBxdWVzdGlvbiBp ZiBJIHdhbnQgdG8gaWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3Ig YnVybmluZyBhbiBJU08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJl IHByZXNlbnQgdG9vLCBvciB3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29n bml6ZSB0aGF0IGFuIElTTyBpcyBiZWluZyBkcm9wcGVkIGFuZCBhc2sgaWYgSSB3YW50IHRvIG1h a2UgYW4gSVNPIG9yIGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KPGJyPjxicj5BcHBh cmVudGx5IE5hdXRpbHVzIGtub3dzIGl0J3MgYW4gSVNPOiBhcyBpdCBpcyBub3csIEkgaGF2ZSB0 byBnbyB0byB0aGUgSVNPLCByaWdodC1jbGljayBhbmQgY2hvb3NlIHRvIGJ1cm4gaXQgZnJvbSB0 aGVyZS4gSSdkIHJhdGhlciBoYXZlIGl0IG1vcmUgdW5pZmllZCwgYXMgdGhlIHF1ZXN0aW9uIGlz IGFza2VkIGFueXdheXMgd2hlbiBJIHB1dCB0aGUgQ0QgaW4uPGJyPgo8YnI+LS0gS3Jpc3RvZmZl cjxicj48YnI+LS0gPGJyPktyaXN0b2ZmZXIgTHVuZMOpbjxicj7inIkgPGEgaHJlZj0ibWFpbHRv OmtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbSI+a3Jpc3RvZmZlci5sdW5kZW5AZ21haWwuY29t PC9hPjxicj7inIkgPGEgaHJlZj0ibWFpbHRvOmtyaXN0b2ZmZXIubHVuZGVuQGdhbWVtYWtlci5u dSI+a3Jpc3RvZmZlci5sdW5kZW5AZ2FtZW1ha2VyLm51PC9hPjxicj4KPGEgaHJlZj0iaHR0cDov L3d3dy5nYW1lbWFrZXIubnUvIj5odHRwOi8vd3d3LmdhbWVtYWtlci5udS88L2E+PGJyPuKYjiAw NzA0IDQ4IDk4IDc3PGJyPgo= ------=_Part_9323_19651519.1151435762818-- From sl392@hermes.cam.ac.uk Mon Jun 26 09:23:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 30A753B017B for ; Mon, 26 Jun 2006 09:23:46 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20605-04 for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) Received: from ppsw-9.csi.cam.ac.uk (ppsw-9.csi.cam.ac.uk [131.111.8.139]) by menubar.gnome.org (Postfix) with ESMTP id 231A23B035F for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) X-Cam-SpamDetails: Not scanned X-Cam-AntiVirus: No virus found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]:51862) by ppsw-9.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:587) with esmtpsa (LOGIN:sl392) (TLSv1:DHE-RSA-AES256-SHA:256) id 1Fur3z-0007uC-Uw (Exim 4.54) (return-path ); Mon, 26 Jun 2006 14:23:39 +0100 To: Emmanuele Bassi Subject: Re: support truncated long file name? References: <1151317709.6877.2.camel@localhost> From: Leon Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= Date: Mon, 26 Jun 2006 14:23:38 +0100 In-Reply-To: <1151317709.6877.2.camel@localhost> (Emmanuele Bassi's message of "Mon, 26 Jun 2006 11:28:29 +0100") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Shidai (Leon) Liu X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.593 tagged_above=-999 required=2 tests=[AWL=0.006, BAYES_00=-2.599] X-Spam-Score: -2.593 X-Spam-Level: X-Mailman-Approved-At: Thu, 29 Jun 2006 03:03:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 13:23:46 -0000 Emmanuele Bassi writes: > Hi; > > On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: >> > Popup tooltips in the GTK tree/list widget are not possible in the current >> > stable releases, however I think they will be part of the upcoming GTK >> > 2.10. > > Unfortunately, no. They didn't make in time for the 2.10 schedule. > Can we implement this without using tooltip? For example, we can have the full file name displayed when the file is selected and truncated otherwise. Most of the time, user can recognize the file by the mimetype icon and the beginning few words of the file. >> I agree that it would be good to use ellipsis (...) for filenames >> > that do not fit in their column, could you file a bug about this at >> > http://bugzilla.gnome.org/ so that the developers don't forget about it? >> >> Funny story, this bug has been filed slightly more than 4 years >> ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 >> >> Can somebody raise the priority of the bug? > > The GTK developers are pretty well aware of the situation. > Unfortunately, providing support for tooltips inside GtkTreeView is a > tricky thing to do, and requires a major overhauling of the tooltips > API. This means introducing a major change in every application using > tooltips, so we need to do things right. Now I see it is fundamentally difficult to implement the tooptip methods:) > >> As a DE values usability >> and simplicity this much as gnome, it will be a shame to see this bug >> hang around for another 4 year. > > Faster work implies giving a hand with code. If you want, you can > contact Kristian, which is working on this issue, and help him by > writing some code yourself. > > Ciao, > Emmanuele. Thanks Emmanuele. Unfortunately, I'm not trained in programming. Implementing this without tooltip seems feasible. -- Leon From james@pharaohsystems.com Fri Jun 2 05:47:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2368D3B02C0 for ; Fri, 2 Jun 2006 05:47:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15548-06 for ; Fri, 2 Jun 2006 05:47:36 -0400 (EDT) Received: from lan.apnuk.com (lan.apnuk.com [212.50.185.139]) by menubar.gnome.org (Postfix) with SMTP id 5004E3B10A9 for ; Fri, 2 Jun 2006 05:47:35 -0400 (EDT) Received: (qmail 26337 invoked from network); 2 Jun 2006 09:47:32 -0000 Received: from unknown (HELO apollo.leeds.apnuk.com) (10.5.30.2) by vulpine.leeds.apnuk.com with SMTP; 2 Jun 2006 09:47:32 -0000 From: James Pharaoh To: nautilus-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-07kukkHUo3K+dfnSUGad" Date: Fri, 02 Jun 2006 10:49:00 +0100 Message-Id: <1149241741.11467.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 02 Jun 2006 13:45:59 -0400 Subject: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 09:47:38 -0000 --=-07kukkHUo3K+dfnSUGad Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I like being able to give folders icons in Nautilus but the "metadata" method is not much use because it is difficult to copy with the folder if I don't use Nautilus to copy it. I'd like to be able to stick a file, say ".nautilus-folder-icon" in the directory to set a default icon, obviously this would be overridden by any metadata icon set. In fact, the name of the file could be set in gconf and this could turn the option on. I assume this wouldn't be too hard to do, I'd like to have a go myself but would appreciate a few hints from someone who knows where to look in the code. Thanks, James --=-07kukkHUo3K+dfnSUGad Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEgAmMOov9Pl/is1ERAjYHAKCHw/iPWN55VZBzbRSsif0Q5YQOeQCfRp1k ttjF+6rSt545Z6oKNuRada0= =ftMn -----END PGP SIGNATURE----- --=-07kukkHUo3K+dfnSUGad-- From patrick.jacquotf@free.fr Fri Jun 2 13:59:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AB21E3B0170 for ; Fri, 2 Jun 2006 13:59:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12964-10 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 759E43B0176 for ; Fri, 2 Jun 2006 13:59:12 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 5E8A647E61; Fri, 2 Jun 2006 19:59:08 +0200 (CEST) From: Patrick Jacquot To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jun 2006 19:58:55 +0200 Message-Id: <1149271136.8687.44.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.011, BAYES_00=-2.599] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 17:59:13 -0000 Le vendredi 02 juin 2006 à 10:49 +0100, James Pharaoh a écrit : > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. > > Thanks, > > James Maybe adding emblems to the folder icons could achieve what you want. Those emblems superimpose themselves over the folder icon, you can have a folder with a yellow star superimposed, another one with a rocket superimposed and so on. I devised a small utility to be able to add such emblems to a directory icon (or a file icon) from the command line (or from a script) See the chemb project on sourceforge -- Patrick From sacha@forty2.be Fri Jun 2 15:05:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 50A4B3B0E50 for ; Fri, 2 Jun 2006 15:05:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17528-06 for ; Fri, 2 Jun 2006 15:05:55 -0400 (EDT) Received: from adicia.telenet-ops.be (adicia.telenet-ops.be [195.130.132.56]) by menubar.gnome.org (Postfix) with ESMTP id 955E03B0A09 for ; Fri, 2 Jun 2006 15:05:47 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by adicia.telenet-ops.be (Postfix) with SMTP id 3A604705D0 for ; Fri, 2 Jun 2006 21:05:46 +0200 (CEST) Received: from romulus.local (dD5E02B5C.access.telenet.be [213.224.43.92]) by adicia.telenet-ops.be (Postfix) with ESMTP id F3AA0705F6 for ; Fri, 2 Jun 2006 21:05:45 +0200 (CEST) From: Sacha Vandenbroeck To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 02 Jun 2006 21:05:50 +0100 Message-Id: <1149278750.14015.9.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Dropline GNOME Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.395 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.395 X-Spam-Level: X-Mailman-Approved-At: Sat, 03 Jun 2006 08:07:21 -0400 Subject: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2006 19:05:56 -0000 I posted a Nautilus bug, but now ofcourse the developers need a backtrace of this crash. But how do I do this? I have to compile nautilus myself so I tried to do this with the "--enable-debug" option and then tried to get a backtrace with gdb (following the instructions at this link https://wiki.ubuntu.com/Backtrace ) but I still can't get a full backtrace. I don't get the "no debugging symbols found" messages, but still the backtrace is as useless as before. So how do I build nautilus to debug it? I'm sorry if this sounds silly, but I never tried this before and there is almost no information in human language on this topic (I'm not a developer myself but still I want to help make Gnome better). From seb128@debian.org Sat Jun 3 08:52:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDCC33B05AB for ; Sat, 3 Jun 2006 08:52:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03672-09 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from smtp7.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.24]) by menubar.gnome.org (Postfix) with ESMTP id 8BBB13B05D6 for ; Sat, 3 Jun 2006 08:52:39 -0400 (EDT) Received: from [192.168.0.2] (ANancy-151-1-75-89.w81-50.abo.wanadoo.fr [81.50.153.89]) by mwinf0706.orange.fr (SMTP Server) with ESMTP id 068A41C0008D for ; Sat, 3 Jun 2006 14:52:36 +0200 (CEST) X-ME-UUID: 20060603125237268.068A41C0008D@mwinf0706.orange.fr From: Sebastien Bacher To: nautilus-list@gnome.org In-Reply-To: <1149278750.14015.9.camel@localhost> References: <1149278750.14015.9.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15 Date: Sat, 03 Jun 2006 14:52:31 +0200 Message-Id: <1149339151.5915.0.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.526 tagged_above=-999 required=2 tests=[AWL=0.073, BAYES_00=-2.599] X-Spam-Score: -2.526 X-Spam-Level: Subject: Re: Rebuilding nautilus for debugging X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 12:52:41 -0000 Le vendredi 02 juin 2006 à 21:05 +0100, Sacha Vandenbroeck a écrit : > I posted a Nautilus bug, but now ofcourse the developers need a > backtrace of this crash. But how do I do this? I have to compile > nautilus myself Hi, No need to build a debug package, just "apt-get install nautilus-dbg" Cheers, Sebastien Bacher From mark.kegel@gmail.com Sat Jun 3 12:08:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 7138E3B0702 for ; Sat, 3 Jun 2006 12:08:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14511-09 for ; Sat, 3 Jun 2006 12:08:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by menubar.gnome.org (Postfix) with ESMTP id 144503B05AE for ; Sat, 3 Jun 2006 12:08:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so815420uge for ; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=W3JRAemVm7OT3HZt2c9RWshzsIBh1m2jBCk+XhCdQhCGtf2oEFpImrEbBnTXY1DChmA46aVlKGGeltQrmOjjppin/uUnWUn1wFkAfVdppvvGeJ1suY0q6OhYugz4aF93JKNrMlbKo2m1+WD50q1Q+pc2WLm4FHQNnkoCAPnIwGs= Received: by 10.67.97.7 with SMTP id z7mr1786225ugl; Sat, 03 Jun 2006 09:08:16 -0700 (PDT) Received: by 10.66.254.18 with HTTP; Sat, 3 Jun 2006 09:08:16 -0700 (PDT) Message-ID: <8a5993840606030908n9df00b8k8cdfb555b95c3dbe@mail.gmail.com> Date: Sat, 3 Jun 2006 10:08:16 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.042 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_BL_SPAMCOP_NET=1.558, SPF_PASS=-0.001] X-Spam-Score: -1.042 X-Spam-Level: X-Mailman-Approved-At: Sun, 04 Jun 2006 08:36:32 -0400 Subject: volumes not showing in nautilus X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jun 2006 16:08:18 -0000 I've been running gnome 2.14 for about two weeks now and am very pleased with it. Unfortunately, nautilus isn't showing the partitions I have mounted, as it did in 2.12. I've set the appropriate settings with gconf (at least I think I have) with no luck. Anyone have any ideas or pointers to a solution? Mark Kegel From xclaesse@gmail.com Mon Jun 5 05:57:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 994D93B031D; Mon, 5 Jun 2006 05:57:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20358-05; Mon, 5 Jun 2006 05:56:59 -0400 (EDT) Received: from outmx026.isp.belgacom.be (outmx026.isp.belgacom.be [195.238.4.91]) by menubar.gnome.org (Postfix) with ESMTP id 5AEF03B00CE; Mon, 5 Jun 2006 05:56:58 -0400 (EDT) Received: from outmx026.isp.belgacom.be (localhost [127.0.0.1]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559upxm015348; Mon, 5 Jun 2006 11:56:51 +0200 (envelope-from ) Received: from [10.0.0.3] (244-16.241.81.adsl.skynet.be [81.241.16.244]) by outmx026.isp.belgacom.be (8.12.11.20060308/8.12.11/Skynet-OUT-2.22) with ESMTP id k559ulet015294; Mon, 5 Jun 2006 11:56:48 +0200 (envelope-from ) From: Xavier Claessens To: Christian Neumair In-Reply-To: <1147197585.5045.11.camel@localhost> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-nAeSl/tN81bv5MmP9h9B" Date: Mon, 05 Jun 2006 11:56:49 +0200 Message-Id: <1149501410.7231.27.camel@zdra-desktop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.999 tagged_above=-999 required=2 tests=[AWL=-0.469, BAYES_00=-2.599, SPF_NEUTRAL=1.069] X-Spam-Score: -1.999 X-Spam-Level: Cc: Mark McLoughlin , Vincent Untz , "nautilus-list@gnome.org" Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 09:57:01 -0000 --=-nAeSl/tN81bv5MmP9h9B Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Le mardi 09 mai 2006 =C3=A0 19:59 +0200, Xavier Claessens a =C3=A9crit : > Le mardi 09 mai 2006 =C3=A0 18:59 +0200, Christian Neumair a =C3=A9crit : > > Am Dienstag, den 09.05.2006, 10:25 +0200 schrieb Xavier Claessens: > > > Le mardi 09 mai 2006 =C3=A0 10:01 +0200, Christian Neumair a =C3=A9cr= it : > > > > > For volume icons from the desktop, is it possible to make it work= like > > > > > in computer:/// ? nautilus should generate on-the-fly same .drive= files. > > > > > Like that we are sure that at least icons from desktop and from > > > > > computer:/// react the same way. > > > >=20 > > > > Passing around on-the-fly generated files (which would have to be p= ut > > > > into file:///tmp) isn't a good idea IMHO, because it requires sniff= ing > > > > foreach passed-in URI. My proposal tried to address the fact that s= ome > > > > applications are interested in volumes or drives but not in their > > > > corresponding files, since the actual volume/drive data can be quer= ied > > > > from the volume monitor. > > >=20 > > > Ok. So computer:/// should works like x-nautilus-desktop:/// and > > > nautilus should never use the on-the-fly generated .drive files. Like > > > that most problems are solved because icons from desktop aren't accep= ted > > > for dropping anywhere. > >=20 > > No, it doesn't solve the problem, because - as you pointed out - not > > doing anything isn't really user-friendly either. IMHO it would be the > > best to operate on the drive's activation URI when dropping a volume or > > drive file to another folder. >=20 > As I understand we have currently 2 representations possible for a > drive/volume icon in nautilus. One for computer:/// and another for > x-nautilus-desktop:///. So I think the first step is to have only one > representation. We should only use the first or the second or maybe > another system which will replace the two. >=20 > So my question is: we should use computer:/// representation for > x-nautilus-desktop:/// ? Or the reverse ? or something else ? >=20 > When we have one single representation we should patch other > applications (including gnome-panel and nautilus itself) to accept in > one way or another DnD of this representation. >=20 > Xavier Claessens. >=20 So what can we do now for GNOME 2.15 ? I think nautilus should really have a common way handling drives/volumes files. Here is an example of *really* bad design: zdra@zdra-desktop:~/programmation/gnome/nautilus$ grep -r "eject_for_type (GnomeVFSDeviceType type)" * libnautilus-private/nautilus-desktop-link-monitor.c:eject_for_type (GnomeVFSDeviceType type) src/nautilus-places-sidebar.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-directory-view.c:eject_for_type (GnomeVFSDeviceType type) src/file-manager/fm-tree-view.c:eject_for_type (GnomeVFSDeviceType type) Yes this basic function is defined 4 times in different files ! There is also functions like the one which says if an GnomeVFSDrive should have a "eject", "unmount", "format",etc popup menu option which is copy/pasted everywhere in nautilus. So what I propose is adding some objects to libnautilus-private to have a common way handling Drive and Volume files. In the same way of nautilus_destkop_* we can make something like nautilus_volume_file and nautilus_drive_file which would be used to computer:///, x-nautilus-desktop:///,etc. On this objects we can have methods like gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); to replace the eject_for_type(). And void nautilus_volume_file_get_options (NautilusDriveFile*, gboolean *show_mount, gboolean *show_unmount, gboolean *show_eject, gboolean *show_format); To know which options we can show for this file. I don't know exactly how all that can work and if that's a good idea but I can work on it this summer. I'll experiment some patches as soon as my exams finishes. I would be happy to have comments on this. Xavier Claessens. --=-nAeSl/tN81bv5MmP9h9B Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEg//h6dEBUn2qPAMRAtmXAKCB3U3DFjVEGjbAazBKl7zNZwTUFQCgjxxd +HMH0MmP9vv41UqLjYgldaE= =BuCn -----END PGP SIGNATURE----- --=-nAeSl/tN81bv5MmP9h9B-- From jamesat@comcast.net Wed Jun 7 07:38:09 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 70A7B3B0C14 for ; Wed, 7 Jun 2006 07:38:09 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07291-05 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [63.240.77.85]) by menubar.gnome.org (Postfix) with ESMTP id 61B153B0C89 for ; Wed, 7 Jun 2006 07:38:06 -0400 (EDT) Received: from [10.10.10.51] (c-66-31-77-146.hsd1.nh.comcast.net[66.31.77.146]) by comcast.net (sccrmhc15) with SMTP id <2006060711380501500ch6mte>; Wed, 7 Jun 2006 11:38:05 +0000 From: James Tremblay To: nautilus-list@gnome.org Content-Type: text/plain Date: Wed, 07 Jun 2006 07:37:40 -0400 Message-Id: <1149680260.8506.2.camel@sled10.liberty> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: Yes, score=2.415 tagged_above=-999 required=2 tests=[BAYES_20=-0.74, DNS_FROM_RFC_POST=1.708, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: 2.415 X-Spam-Level: ** X-Spam-Flag: YES Subject: connectivity issues X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 11:38:09 -0000 is there any plan to integrate standards based slp services to Nautilus. this is a ridiculous question to ask of a modern network browser but i'm asking cuz it's needed! From sivan@ubuntu.com Wed Jun 7 14:39:47 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 663863B0546 for ; Wed, 7 Jun 2006 14:39:47 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05495-10 for ; Wed, 7 Jun 2006 14:39:44 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id BF82C3B069F for ; Wed, 7 Jun 2006 14:39:43 -0400 (EDT) Received: from bzq-84-108-224-57.cablep.bezeqint.net (bzq-84-108-224-57.cablep.bezeqint.net [84.108.224.57]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BC32D44DD for ; Wed, 7 Jun 2006 20:39:36 +0200 (CEST) From: Sivan Greenberg To: nautilus-list@gnome.org In-Reply-To: <1149074455.5848.7.camel@localhost> References: <1149074455.5848.7.camel@localhost> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 07 Jun 2006 21:39:32 +0300 Message-Id: <1149705572.8926.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.369 tagged_above=-999 required=2 tests=[AWL=0.095, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.369 X-Spam-Level: Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2006 18:39:47 -0000 Hi Again, the wonderful users and hacker of nautilus. I would like to bring your attention again to a patch I have created originally using pure gnome_vfs functions to check if the source's parent is read only, and if so default to a copy operation instead of a move operation which previously caused hassle, confusing and much mess among especially converts from other operating system, as to why "Such a trivial operation needs to involve hassle and why do I even need to think about it and select copy from the context menu??" etc.. ;-) So after realizing this patch is not good enough, due to it being inside a callback which gets called multiple times per each DND operation, Manny on the irc channel proposed I use instead of the native gnome-vfs methods, the nautilus infras. for file manipulation (to check if the source uri's parent is read only) , namely libnautilus-private/nautilus-file.h::nautilus_file_get_existing and libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info Now my question is, should I get a new patch in the same a approach of the previous one (which actually followed another patch approach, from the file ownership bug) but with the this time cache enabled functions of nautilus-file.h, will this be accepted by the upstream maintainers? I would hate to start work on it, just to realize I need to re-do it again. Many thanks, and apologies for the spam :) Sivan On Wed, 2006-05-31 at 14:20 +0300, Sivan Green wrote: > Hi List! > > As I have been experiencing this bug for quite some time long, and been > bitched my converts that this is such a minimal thing for an "OS" to > know to do, I have decided to write a patch for it myself. > > My patch basically adds another check before deciding on a "move" > operation, in a similar way to what [1] is already doing, and as such, > [1] must be applied before [2] can be applied to achieve the fix. > > This is already scheduled for dapper-updates, but I would love to see it > fixed upstream as well, for benefit of other distros who have reported > this issue. (has also bee spotted in Fedora) > > Many Thanks! > > Cheers, > > Sivan > > [1]: http://bugzilla.gnome.org/attachment.cgi?id=63939&action=view > [2]: http://bugzilla.gnome.org/attachment.cgi?id=66519 From promac@gmail.com Thu Jun 8 22:12:37 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 00AED3B0108 for ; Thu, 8 Jun 2006 22:12:37 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20139-03 for ; Thu, 8 Jun 2006 22:12:36 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.200]) by menubar.gnome.org (Postfix) with ESMTP id 3902E3B0118 for ; Thu, 8 Jun 2006 22:12:35 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so556444wxd for ; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k8WPqufouETdhytWFOCSGqDBX6Uww6u/gx9GEiZfqGDansyu/0GfgVJyWff6v5Bes6Maf8ZS2LgMrkJjT8mpXVazDoz6ic2fs6ad7faacc72ctSOSMCMi0jOeU6u9dS8t246PH01NSDAEkqr+nztxZGQI1j/y8aqMs+P7Y/+/5Y= Received: by 10.70.36.1 with SMTP id j1mr2903510wxj; Thu, 08 Jun 2006 19:12:34 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Thu, 8 Jun 2006 19:12:34 -0700 (PDT) Message-ID: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Date: Thu, 8 Jun 2006 23:12:34 -0300 From: "Paulo Cavalcanti" To: nautilus-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19117_24627930.1149819154508" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.588 tagged_above=-999 required=2 tests=[AWL=-0.340, BAYES_00=-2.599, HTML_10_20=1.351, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -1.588 X-Spam-Level: Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 02:12:37 -0000 ------=_Part_19117_24627930.1149819154508 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. ------=_Part_19117_24627930.1149819154508 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi,

I am having a problem with nautilus 2.10 from fedora 4.
Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When
I try to close the gnome session it hangs and I have to kill  X.

Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed.

Any suggestion would be greatly appriciated.

Thanks,

/Paulo Roma. ------=_Part_19117_24627930.1149819154508-- From nshmyrev@yandex.ru Fri Jun 9 01:48:25 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 740903B009A for ; Fri, 9 Jun 2006 01:48:25 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30793-01 for ; Fri, 9 Jun 2006 01:48:24 -0400 (EDT) Received: from tzec.mtu.ru (tzec.mtu.ru [195.34.34.228]) by menubar.gnome.org (Postfix) with ESMTP id DF3BF3B0014 for ; Fri, 9 Jun 2006 01:48:21 -0400 (EDT) Received: from gnome.local (ppp83-237-205-132.pppoe.mtu-net.ru [83.237.205.132]) by smtp.MTU.RU (Postfix) with ESMTP id 453E4488309; Fri, 9 Jun 2006 09:48:19 +0400 (MSD) (envelope-from nshmyrev@yandex.ru) From: "Nickolay V. Shmyrev" To: Paulo Cavalcanti In-Reply-To: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Date: Fri, 09 Jun 2006 09:48:27 +0400 Message-Id: <1149832107.2245.28.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.797 tagged_above=-999 required=2 tests=[AWL=-0.402, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_NEUTRAL=1.069] X-Spam-Score: -1.797 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 05:48:25 -0000 Ð’ Чтв, 08/06/2006 в 23:12 -0300, Paulo Cavalcanti пишет: > Hi, > > I am having a problem with nautilus 2.10 from fedora 4. > Since yesterday, it does not put any icon on the desktop, although it > is running. It is also using more than 95% of the CPU. When > I try to close the gnome session it hangs and I have to kill X. > > Everything else seems to be normal. I can login in kde with no problem > at all. I rebooted the computer many times and nothing has changed. > > Any suggestion would be greatly appriciated. > Without additional information it's hard to say what is going on. First of all, check xsession-error in /tmp if something is dumped to error log. Then try to run nautilus or gnome-session under strace and find the place where it hangs. You can try to debug it: with gdb you should login from console, attach to the nautilus with gdb --pid= and collect backtrace with "thread apply all bt" command. You need to install debug packages installed. From promac@gmail.com Fri Jun 9 05:58:16 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F0973B01CA for ; Fri, 9 Jun 2006 05:58:16 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13186-06 for ; Fri, 9 Jun 2006 05:58:15 -0400 (EDT) Received: from wx-out-0102.google.com (wx-out-0102.google.com [66.249.82.192]) by menubar.gnome.org (Postfix) with ESMTP id B48E83B0770 for ; Fri, 9 Jun 2006 05:58:14 -0400 (EDT) Received: by wx-out-0102.google.com with SMTP id i30so608500wxd for ; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mSed73zFvOJhdPHW9Yif+JRsWWePYb71KV3h3JbLoqieOWg+6Yppc95cWmUhw/d6gYdkEbxdgjXfPvh2Whim2HdNbRldY66mxmxKSYjrhQxGDzH6CThqyjhX0xhsPIHyr0JHiMJ7sCuR3o9gOYX55imhIyCq5ToVEXUKVKMdroE= Received: by 10.70.100.17 with SMTP id x17mr3293949wxb; Fri, 09 Jun 2006 02:58:14 -0700 (PDT) Received: by 10.70.57.6 with HTTP; Fri, 9 Jun 2006 02:58:13 -0700 (PDT) Message-ID: <68720af30606090258r5658e239ga508c46495cf877b@mail.gmail.com> Date: Fri, 9 Jun 2006 06:58:14 -0300 From: "Paulo Cavalcanti" To: "Nickolay V. Shmyrev" In-Reply-To: <1149832107.2245.28.camel@gnome.local> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22870_26670651.1149847094006" References: <68720af30606081912i7698258fpb06ba752a112ffb1@mail.gmail.com> <1149832107.2245.28.camel@gnome.local> X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.842 tagged_above=-999 required=2 tests=[AWL=0.533, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.842 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 09:58:16 -0000 ------=_Part_22870_26670651.1149847094006 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5CgpJIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dpbmcgYW5k IGZvdW5kIHRoZSBwcm9ibGVtLgpJIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQgd2FzIGNhdXNl ZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZQpJJ3ZlIG1hZGUgaW4gZ3N0cmVhbWVyLTAuMTAu Cgpnc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1w bHVnaW5zLWJhc2UtMC4xMC43LjItMC5nc3QuMS40LmkzODYucnBtCmdzdHJlYW1lcjAxMC1kZXZl bC0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG0KZ3N0cmVhbWVyLXRvb2xzLTAuMTAuNi4yLTAu Z3N0LjEuNC5pMzg2LnJwbQpnc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLWRldmVsLTAuMTAuNy4y LTAuZ3N0LjEuNC5pMzg2LnJwbQoKSSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVs ZWFzZSBhbmQgbmF1dGlsdXMgaXMgc3RhcnRpbmcgYWdhaW4uCldoeSB3b3VsZCBuYXV0aWx1cyBk ZXBlbmQgb24gdGhpcyBjcmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3IKcmh5dGhtYm94LTAu OS4gImxkZCAvdXNyL2Jpbi9uYXV0aWx1cyIgZG9lcyBub3Qgc2hvdyBhbnkgZGVwZW5kZW5jeS4K CldoYXQgcGFydCBvZiBnbm9tZSBkb2VzIHVzZSBpdD8KClRoYW5rIHlvdSwgdmVyeSBtdWNoLgoK L1BhdWxvIFJvbWEuCgpPbiA2LzkvMDYsIE5pY2tvbGF5IFYuIFNobXlyZXYgPG5zaG15cmV2QHlh bmRleC5ydT4gd3JvdGU6Cj4KPiD3IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVs byBDYXZhbGNhbnRpINDJ28XUOgo+ID4gSGksCj4gPgo+ID4gSSBhbSBoYXZpbmcgYSBwcm9ibGVt IHdpdGggbmF1dGlsdXMgMi4xMCBmcm9tIGZlZG9yYSA0Lgo+ID4gU2luY2UgeWVzdGVyZGF5LCBp dCBkb2VzIG5vdCBwdXQgYW55IGljb24gb24gdGhlIGRlc2t0b3AsIGFsdGhvdWdoIGl0Cj4gPiBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo+ID4gSSB0cnkgdG8gY2xvc2UgdGhlIGdub21lIHNlc3Npb24gaXQgaGFuZ3MgYW5kIEkgaGF2 ZSB0byBraWxsICBYLgo+ID4KPiA+IEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBiZSBub3JtYWwu IEkgY2FuIGxvZ2luIGluIGtkZSB3aXRoIG5vIHByb2JsZW0KPiA+IGF0IGFsbC4gSSByZWJvb3Rl ZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQgbm90aGluZyBoYXMgY2hhbmdlZC4KPiA+Cj4g PiBBbnkgc3VnZ2VzdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLgo+ID4KPiBXaXRo b3V0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXQncyBoYXJkIHRvIHNheSB3aGF0IGlzIGdvaW5n IG9uLiBGaXJzdAo+IG9mIGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21l dGhpbmcgaXMgZHVtcGVkIHRvIGVycm9yCj4gbG9nLiBUaGVuIHRyeSB0byBydW4gbmF1dGlsdXMg b3IgZ25vbWUtc2Vzc2lvbiB1bmRlciBzdHJhY2UgYW5kIGZpbmQgdGhlCj4gcGxhY2Ugd2hlcmUg aXQgaGFuZ3MuCj4KPiBZb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDoKPgo+IHdpdGggZ2RiIHlvdSBz aG91bGQgbG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGgKPgo+ IGdkYiAtLXBpZD08bmF1dGlsdXNfcGlkPgo+Cj4gYW5kIGNvbGxlY3QgYmFja3RyYWNlIHdpdGgg InRocmVhZCBhcHBseSBhbGwgYnQiIGNvbW1hbmQuIFlvdSBuZWVkIHRvCj4gaW5zdGFsbCBkZWJ1 ZyBwYWNrYWdlcyBpbnN0YWxsZWQuCj4KPgo+Cg== ------=_Part_22870_26670651.1149847094006 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline SGksIE5pY2tvbGF5PGJyPjxicj5JIGZvbGxvd2VkIHlvdXIgc3VnZ2VzdGlvbiBvZiBkZWJ1Z2dp bmcgYW5kIGZvdW5kIHRoZSBwcm9ibGVtLjxicj5JIGNhbiBiYXJlbHkgYmVsaWV2ZSBpdC4gSXQg d2FzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSBsYXN0IHVwZGF0ZTxicj5JJ3ZlIG1hZGUgaW4gZ3N0 cmVhbWVyLTAuMTAuPGJyPjxicj5nc3RyZWFtZXIwMTAtMC4xMC42LjItMC5nc3QuMS40LmkzODYu cnBtCjxicj5nc3RyZWFtZXIwMTAtcGx1Z2lucy1iYXNlLTAuMTAuNy4yLTAuZ3N0LjEuNC5pMzg2 LnJwbTxicj5nc3RyZWFtZXIwMTAtZGV2ZWwtMC4xMC42LjItMC5nc3QuMS40LmkzODYucnBtPGJy PmdzdHJlYW1lci10b29scy0wLjEwLjYuMi0wLmdzdC4xLjQuaTM4Ni5ycG08YnI+Z3N0cmVhbWVy MDEwLXBsdWdpbnMtYmFzZS1kZXZlbC0wLjEwLjcuMi0wLmdzdC4xLjQuaTM4Ni5ycG0gPGJyPgo8 YnI+SSBqdXN0IHdlbnQgYmFjayB0byB0aGUgcHJldmlvdXMgcmVsZWFzZSBhbmQgbmF1dGlsdXMg aXMgc3RhcnRpbmcgYWdhaW4uPGJyPldoeSB3b3VsZCBuYXV0aWx1cyBkZXBlbmQgb24gdGhpcyBj cmFwPyBJIHRob3VnaCBpdCB3YXMganVzdCBmb3I8YnI+cmh5dGhtYm94LTAuOS4gJnF1b3Q7bGRk IC91c3IvYmluL25hdXRpbHVzJnF1b3Q7IGRvZXMgbm90IHNob3cgYW55IGRlcGVuZGVuY3kuCjxi cj48YnI+V2hhdCBwYXJ0IG9mIGdub21lIGRvZXMgdXNlIGl0Pzxicj48YnI+VGhhbmsgeW91LCB2 ZXJ5IG11Y2guPGJyPjxicj4vUGF1bG8gUm9tYS48YnI+PGJyPjxkaXY+PHNwYW4gY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA2LzkvMDYsIDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1lIj5OaWNrb2xh eSBWLiBTaG15cmV2PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm5zaG15cmV2QHlhbmRleC5ydSI+ Cm5zaG15cmV2QHlhbmRleC5ydTwvYT4mZ3Q7IHdyb3RlOjwvc3Bhbj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIw NCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij73 IP7U1ywgMDgvMDYvMjAwNiDXIDIzOjEyIC0wMzAwLCBQYXVsbyBDYXZhbGNhbnRpINDJ28XUOgo8 YnI+Jmd0OyBIaSw8YnI+Jmd0Ozxicj4mZ3Q7IEkgYW0gaGF2aW5nIGEgcHJvYmxlbSB3aXRoIG5h dXRpbHVzIDIuMTAgZnJvbSBmZWRvcmEgNC48YnI+Jmd0OyBTaW5jZSB5ZXN0ZXJkYXksIGl0IGRv ZXMgbm90IHB1dCBhbnkgaWNvbiBvbiB0aGUgZGVza3RvcCwgYWx0aG91Z2ggaXQ8YnI+Jmd0OyBp cyBydW5uaW5nLiBJdCBpcyBhbHNvIHVzaW5nIG1vcmUgdGhhbiA5NSUgb2YgdGhlIENQVS4gV2hl bgo8YnI+Jmd0OyBJIHRyeSB0byBjbG9zZSB0aGUgZ25vbWUgc2Vzc2lvbiBpdCBoYW5ncyBhbmQg SSBoYXZlIHRvIGtpbGwmbmJzcDsmbmJzcDtYLjxicj4mZ3Q7PGJyPiZndDsgRXZlcnl0aGluZyBl bHNlIHNlZW1zIHRvIGJlIG5vcm1hbC4gSSBjYW4gbG9naW4gaW4ga2RlIHdpdGggbm8gcHJvYmxl bTxicj4mZ3Q7IGF0IGFsbC4gSSByZWJvb3RlZCB0aGUgY29tcHV0ZXIgbWFueSB0aW1lcyBhbmQg bm90aGluZyBoYXMgY2hhbmdlZC4KPGJyPiZndDs8YnI+Jmd0OyBBbnkgc3VnZ2VzdGlvbiB3b3Vs ZCBiZSBncmVhdGx5IGFwcHJpY2lhdGVkLjxicj4mZ3Q7PGJyPldpdGhvdXQgYWRkaXRpb25hbCBp bmZvcm1hdGlvbiBpdCdzIGhhcmQgdG8gc2F5IHdoYXQgaXMgZ29pbmcgb24uIEZpcnN0PGJyPm9m IGFsbCwgY2hlY2sgeHNlc3Npb24tZXJyb3IgaW4gL3RtcCBpZiBzb21ldGhpbmcgaXMgZHVtcGVk IHRvIGVycm9yPGJyPmxvZy4gVGhlbiB0cnkgdG8gcnVuIG5hdXRpbHVzIG9yIGdub21lLXNlc3Np b24gdW5kZXIgc3RyYWNlIGFuZCBmaW5kIHRoZQo8YnI+cGxhY2Ugd2hlcmUgaXQgaGFuZ3MuPGJy Pjxicj5Zb3UgY2FuIHRyeSB0byBkZWJ1ZyBpdDo8YnI+PGJyPndpdGggZ2RiIHlvdSBzaG91bGQg bG9naW4gZnJvbSBjb25zb2xlLCBhdHRhY2ggdG8gdGhlIG5hdXRpbHVzIHdpdGg8YnI+PGJyPmdk YiAtLXBpZD0mbHQ7bmF1dGlsdXNfcGlkJmd0Ozxicj48YnI+YW5kIGNvbGxlY3QgYmFja3RyYWNl IHdpdGggJnF1b3Q7dGhyZWFkIGFwcGx5IGFsbCBidCZxdW90OyBjb21tYW5kLiBZb3UgbmVlZCB0 bwo8YnI+aW5zdGFsbCBkZWJ1ZyBwYWNrYWdlcyBpbnN0YWxsZWQuPGJyPjxicj48YnI+PC9ibG9j a3F1b3RlPjwvZGl2Pjxicj4K ------=_Part_22870_26670651.1149847094006-- From crotalus@superig.com.br Thu Jun 8 21:35:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id AD8293B05AC for ; Thu, 8 Jun 2006 21:35:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18364-01 for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: from smtpsig-4.ig.com.br (smtpsig-4.ig.com.br [200.226.132.141]) by menubar.gnome.org (Postfix) with ESMTP id 304553B02FE for ; Thu, 8 Jun 2006 21:35:20 -0400 (EDT) Received: (qmail 26488 invoked from network); 9 Jun 2006 01:35:15 -0000 Received: from 200216029049.user.veloxzone.com.br (HELO [192.168.254.2]) (Usuario_autenticado:promac@superig.com.br@[200.216.29.49]) (envelope-sender ) by smtpsig-4.ig.com.br (qmail-ldap-1.03) with SMTP for ; 9 Jun 2006 01:35:15 -0000 Message-ID: <4488D055.20009@superig.com.br> Date: Thu, 08 Jun 2006 22:35:17 -0300 From: Paulo Roma Cavalcanti Organization: UFRJ User-Agent: Thunderbird 1.5 (X11/20060119) MIME-Version: 1.0 To: nautilus-list@gnome.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=0.001 tagged_above=-999 required=2 tests=[BAYES_50=0.001] X-Spam-Score: 0.001 X-Spam-Level: X-Mailman-Approved-At: Fri, 09 Jun 2006 06:30:27 -0400 Subject: Nautilus 2.10 does not start X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: roma@lcg.ufrj.br List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 01:35:23 -0000 Hi, I am having a problem with nautilus 2.10 from fedora 4. Since yesterday, it does not put any icon on the desktop, although it is running. It is also using more than 95% of the CPU. When I try to close the gnome session it hangs and I have to kill X. Everything else seems to be normal. I can login in kde with no problem at all. I rebooted the computer many times and nothing has changed. Any suggestion would be greatly appriciated. Thanks, /Paulo Roma. From alexl@redhat.com Fri Jun 9 10:23:21 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D9EBB3B010A for ; Fri, 9 Jun 2006 10:23:21 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30603-04 for ; Fri, 9 Jun 2006 10:23:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 219813B0393 for ; Fri, 9 Jun 2006 10:23:15 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5mso001978; Fri, 9 Jun 2006 10:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5miv011931; Fri, 9 Jun 2006 10:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k59E5lwp005947; Fri, 9 Jun 2006 10:05:48 -0400 From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1149103242.8687.38.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1149103242.8687.38.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 09 Jun 2006 16:05:47 +0200 Message-Id: <1149861948.3023.61.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.549 tagged_above=-999 required=2 tests=[AWL=-0.025, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_BF=0.077] X-Spam-Score: -2.549 X-Spam-Level: Cc: Nautilus Subject: Re: nautilus hangs occasionnaly on a right click X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2006 14:23:22 -0000 On Wed, 2006-05-31 at 21:20 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Got it ! > Maybe it's the second time I send this message, but I don't find it in > my "sent" directory It looks like some sort of thread deadlock. Both the main thread and the thumbnailer thread are blocking on a libc mutex that looks like its in free(). The rest of the threads look normal, except this: Thread 11 (Thread -1213518928 (LWP 2980)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x09d05830 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb7ab11f8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () I dunno what that is. In this backtrace the thumbnailing thread was launching: "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/lf2006-04-21.aud.cafiero.34781.sbeok.flac16/lf2006-04-21audD1t01.ogg' '/tmp/.gnome_thumbnail.ObrcTQ'" to thumbnail some video. Maybe this is related. Could you repeat this whole procedure a bunch of time and send me the results. It might be possible to figure out the common attributes of the multiple backtraces. Its pretty hard to figure things out from this one only. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an otherworldly day-dreaming messiah whom everyone believes is mad. She's a scantily clad goth traffic cop who don't take no shit from nobody. They fight crime! From alexl@redhat.com Mon Jun 12 05:55:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 232653B0078 for ; Mon, 12 Jun 2006 05:55:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-02 for ; Mon, 12 Jun 2006 05:55:25 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937443B008A for ; Mon, 12 Jun 2006 05:55:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sfY0025126; Mon, 12 Jun 2006 05:54:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9satI014479; Mon, 12 Jun 2006 05:54:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9sZEB015002; Mon, 12 Jun 2006 05:54:35 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1149705572.8926.8.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:54:35 +0200 Message-Id: <1150106076.3023.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:55:27 -0000 On Wed, 2006-06-07 at 21:39 +0300, Sivan Greenberg wrote: > Hi Again, the wonderful users and hacker of nautilus. > > I would like to bring your attention again to a patch I have created > originally using pure gnome_vfs functions to check if the source's > parent is read only, and if so default to a copy operation instead of a > move operation which previously caused hassle, confusing and much mess > among especially converts from other operating system, as to why "Such a > trivial operation needs to involve hassle and why do I even need to > think about it and select copy from the context menu??" etc.. ;-) > > So after realizing this patch is not good enough, due to it being inside > a callback which gets called multiple times per each DND operation, > Manny on the irc channel proposed I use instead of the native gnome-vfs > methods, the nautilus infras. for file manipulation (to check if the > source uri's parent is read only) , namely > libnautilus-private/nautilus-file.h::nautilus_file_get_existing > > and > > libnautilus-private/nautilus-file.h::nautilus_file_peek_vfs_file_info > > Now my question is, should I get a new patch in the same a approach of > the previous one (which actually followed another patch approach, from > the file ownership bug) but with the this time cache enabled functions > of nautilus-file.h, will this be accepted by the upstream maintainers? > > I would hate to start work on it, just to realize I need to re-do it > again. > > Many thanks, and apologies for the spam :) This is tricky stuff. In general we try to avoid sync i/o in Nautilus, but its very complicated to do in the case of dnd where we really need a sync reply immediately or the ui looks weird (we don't immediately show the right cursor and you might have to wiggle the mouse to get it to change even). Another complication is that doing generic gnome-vfs i/o can cause authentication dialogs to pop up, which is bad during dnd. So, I think the best workaround is to continue using sync i/o in this case. But lets try minimizing it. So, only do this magic for local files (i.e. file: uris), stat as few times as possible and cache i/o results. So, the two patches in your mail need to be combined into one should_convert_move_to_copy() function that does at most one stat of the target and one of the source. Furthermore, we should cache the results of this function for the last target/source pair, which I think can be done by using user-data on the drag context. Does that sound good? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad sweet-toothed dwarf gone bad. She's a wealthy hip-hop hooker living homeless in New York's sewers. They fight crime! From alexl@redhat.com Mon Jun 12 05:56:54 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5F4993B00A7 for ; Mon, 12 Jun 2006 05:56:54 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29230-03 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A5AC63B00A6 for ; Mon, 12 Jun 2006 05:56:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMJV025635; Mon, 12 Jun 2006 05:56:22 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uMGU014838; Mon, 12 Jun 2006 05:56:22 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9uLdp015128; Mon, 12 Jun 2006 05:56:22 -0400 From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1149109286.3625.89.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:56:22 +0200 Message-Id: <1150106182.3023.107.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:56:54 -0000 On Wed, 2006-05-31 at 16:01 -0500, Federico Mena Quintero wrote: > Hi, > > I finally found the reason why volume icons overlap in the desktop > (http://bugzilla.gnome.org/show_bug.cgi?id=330298) > > finish_adding_new_icons() was ignoring all lazily-positioned icons when > filling up the PlacemenGrid. This caused the overlaps. The fix is to > make icon_set_position() turn off that flag in the icon. > > Also, once a lazily-positioned icon was moved to avoid overlaps, we > weren't emitting icon_position_changed so that the higher-level code > would save the new position metadata. This caused potential overlaps > when restarting Nautilus. > > Is this OK to commit? > > [This needs a little change to apply to Manny's latest version of > nautilus-icon-container.c, which doesn't have separate scaling values > for x/y, but that's a trivial change I'll make when applying the patch.] I thought this bug was fixed already? Manny, whats your opinion on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding overambitious jungle king with a winning smile and a way with the ladies. She's a plucky hypochondriac wrestler looking for love in all the wrong places. They fight crime! From alexl@redhat.com Mon Jun 12 05:58:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 439223B00A6 for ; Mon, 12 Jun 2006 05:58:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29028-05 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 99BAF3B00D8 for ; Mon, 12 Jun 2006 05:58:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5O0026237; Mon, 12 Jun 2006 05:58:05 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w5oH015029; Mon, 12 Jun 2006 05:58:05 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5C9w4Lp015176; Mon, 12 Jun 2006 05:58:05 -0400 From: Alexander Larsson To: James Pharaoh In-Reply-To: <1149241741.11467.3.camel@localhost.localdomain> References: <1149241741.11467.3.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 12 Jun 2006 11:58:04 +0200 Message-Id: <1150106285.3023.109.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Folder icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 09:58:34 -0000 On Fri, 2006-06-02 at 10:49 +0100, James Pharaoh wrote: > Hi, > > I like being able to give folders icons in Nautilus but the "metadata" > method is not much use because it is difficult to copy with the folder > if I don't use Nautilus to copy it. > > I'd like to be able to stick a file, say ".nautilus-folder-icon" in the > directory to set a default icon, obviously this would be overridden by > any metadata icon set. In fact, the name of the file could be set in > gconf and this could turn the option on. > > I assume this wouldn't be too hard to do, I'd like to have a go myself > but would appreciate a few hints from someone who knows where to look in > the code. We used to look for a ".directory" file in each directory that let you set both icon and name for the directory (the file used was a desktop file). However, looking for an extra file each time we look at a directory was a significant performance problem, so this was removed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly small-town matador on a mission from God. She's a high-kicking African-American stripper with her own daytime radio talk show. They fight crime! From alexl@redhat.com Mon Jun 12 06:03:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 47A983B008A; Mon, 12 Jun 2006 06:03:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29048-09; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 937FE3B0083; Mon, 12 Jun 2006 06:02:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IEV027487; Mon, 12 Jun 2006 06:02:18 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2IBT015943; Mon, 12 Jun 2006 06:02:18 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5CA2G6h015653; Mon, 12 Jun 2006 06:02:17 -0400 From: Alexander Larsson To: Xavier Claessens In-Reply-To: <1149501410.7231.27.camel@zdra-desktop> References: <1147006329.5239.21.camel@localhost> <1147113863.7920.23.camel@localhost.localdomain> <1147119979.5067.42.camel@localhost> <1147161661.6817.10.camel@localhost.localdomain> <1147163120.4862.12.camel@localhost> <1147193987.5244.10.camel@localhost.localdomain> <1147197585.5045.11.camel@localhost> <1149501410.7231.27.camel@zdra-desktop> Content-Type: text/plain Date: Mon, 12 Jun 2006 12:02:16 +0200 Message-Id: <1150106537.3023.112.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: Christian Neumair , Vincent Untz , "nautilus-list@gnome.org" , Mark McLoughlin Subject: Re: How nautilus manage drive icons X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2006 10:03:01 -0000 On Mon, 2006-06-05 at 11:56 +0200, Xavier Claessens wrote: > So what I propose is adding some objects to libnautilus-private to have > a common way handling Drive and Volume files. In the same way of > nautilus_destkop_* we can make something like nautilus_volume_file and > nautilus_drive_file which would be used to computer:///, > x-nautilus-desktop:///,etc. > > On this objects we can have methods like > > gboolean nautilus_drive_file_can_eject (NautilusDriveFile*); > > to replace the eject_for_type(). And > > void nautilus_volume_file_get_options (NautilusDriveFile*, > gboolean *show_mount, > gboolean *show_unmount, > gboolean *show_eject, > gboolean *show_format); > > To know which options we can show for this file. > > I don't know exactly how all that can work and if that's a good idea but > I can work on it this summer. I'll experiment some patches as soon as my > exams finishes. > > I would be happy to have comments on this. I'm not sure we really need a new object type for this (since there are full-blown objects for volume and drive already this will just cause pain). However, moving these functions into one shared place in libnautilus-private and generalizing them as best we can sounds like a good plan. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a maverick overambitious filmmaker with a robot buddy named Sparky. She's a wealthy communist doctor from a family of eight older brothers. They fight crime! From sivan@ubuntu.com Tue Jun 13 06:01:08 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9334F3B000C for ; Tue, 13 Jun 2006 06:01:08 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18979-03 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8D3323B00C9 for ; Tue, 13 Jun 2006 06:01:05 -0400 (EDT) Received: from bzq-84-108-224-64.cablep.bezeqint.net (bzq-84-108-224-64.cablep.bezeqint.net [84.108.224.64]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8778C1053A; Tue, 13 Jun 2006 11:59:56 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150106076.3023.105.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Tue, 13 Jun 2006 12:59:56 +0300 Message-Id: <1150192797.6544.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.417 tagged_above=-999 required=2 tests=[AWL=0.047, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.417 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 10:01:08 -0000 On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > Another complication is that doing generic gnome-vfs i/o can cause > authentication dialogs to pop up, which is bad during dnd. If it occurs during after a remote sessions has been dropped and the target window is till on, I can't see why it can create a problem. (I believe Win32 based platforms follow this approach as well) > So, the two patches in your mail need to be combined into one > should_convert_move_to_copy() function that does at most one stat of the > target and one of the source. Furthermore, we should cache the results > of this function for the last target/source pair, which I think can be > done by using user-data on the drag context. Some question: * The user ownership patch was not created by me, I think it's taken from nautilus's CVS ;-) * Wouldn't it be easier and more readable to use nautilus own already cache enabled file permissoin and access functions ? (as in libnautilus-private/nautilus-file.h, Manny noted to me these are cache enabled) Cheers, Sivan From alexl@redhat.com Tue Jun 13 07:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D0B863B000A for ; Tue, 13 Jun 2006 07:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20874-04 for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9B2343B000C for ; Tue, 13 Jun 2006 07:13:41 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOH0b003764; Tue, 13 Jun 2006 06:24:17 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOHxZ029012; Tue, 13 Jun 2006 06:24:17 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5DAOGuB003508; Tue, 13 Jun 2006 06:24:16 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150192797.6544.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> Content-Type: text/plain Date: Tue, 13 Jun 2006 12:24:14 +0200 Message-Id: <1150194254.3023.167.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:13:45 -0000 On Tue, 2006-06-13 at 12:59 +0300, Sivan Greenberg wrote: > On Mon, 2006-06-12 at 11:54 +0200, Alexander Larsson wrote: > > > Another complication is that doing generic gnome-vfs i/o can cause > > authentication dialogs to pop up, which is bad during dnd. > > If it occurs during after a remote sessions has been dropped and the > target window is till on, I can't see why it can create a problem. (I > believe Win32 based platforms follow this approach as well) If you do i/o while the drag is happening you'll get the dialog while you're dragging. This is bad in itself, for instance you can't type or click on it without releasing the drag, and then there are potential risks for stuck pointer grabs with modal dialogs. > > So, the two patches in your mail need to be combined into one > > should_convert_move_to_copy() function that does at most one stat of the > > target and one of the source. Furthermore, we should cache the results > > of this function for the last target/source pair, which I think can be > > done by using user-data on the drag context. > > Some question: > > * The user ownership patch was not created by me, I think it's taken > from nautilus's CVS ;-) So? Just change it. :) > * Wouldn't it be easier and more readable to use nautilus own already > cache enabled file permissoin and access functions ? (as in > libnautilus-private/nautilus-file.h, Manny noted to me these are cache > enabled) NautilusFile is the nautilus async machinery. Take a look at for instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some details how it works. You can't really use this in a sync way (except if you're lucky and the info was already cached). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted voodoo paramedic haunted by an iconic dead American confidante She's a radical red-headed femme fatale with an evil twin sister. They fight crime! From federico@ximian.com Tue Jun 13 12:03:41 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 736FB3B00DB for ; Tue, 13 Jun 2006 12:03:41 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29142-07 for ; Tue, 13 Jun 2006 12:03:39 -0400 (EDT) Received: from peabody.ximian.com (peabody.ximian.com [130.57.169.10]) by menubar.gnome.org (Postfix) with ESMTP id F40593B0071 for ; Tue, 13 Jun 2006 12:03:38 -0400 (EDT) Received: (qmail 22918 invoked from network); 13 Jun 2006 15:55:54 -0000 Received: from localhost (HELO 164-99-120-90.boston.ximian.com) (127.0.0.1) by localhost with SMTP; 13 Jun 2006 15:55:54 -0000 From: Federico Mena Quintero To: Alexander Larsson In-Reply-To: <1150106182.3023.107.camel@greebo> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> Content-Type: text/plain Date: Tue, 13 Jun 2006 10:51:33 -0500 Message-Id: <1150213894.17566.105.camel@cacharro.xalalinux.org> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.574 tagged_above=-999 required=2 tests=[AWL=0.025, BAYES_00=-2.599] X-Spam-Score: -2.574 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Overlapping icons, again X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 16:03:41 -0000 On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > I thought this bug was fixed already? > Manny, whats your opinion on this? I believe Manny's patches were about fine-tuning the placement grid and positioning in general. My patch is about maintaining the right metadata for icons by emitting the signal as appropriate, and about really maintaining the position of icons which were lazily placed. Federico From sivan@ubuntu.com Tue Jun 13 18:40:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0FA973B00C9 for ; Tue, 13 Jun 2006 18:40:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08820-08 for ; Tue, 13 Jun 2006 18:40:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 015523B000E for ; Tue, 13 Jun 2006 18:40:30 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id DB37F4509; Wed, 14 Jun 2006 00:39:17 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150194254.3023.167.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 01:39:21 +0300 Message-Id: <1150238361.5853.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 22:40:34 -0000 On Tue, 2006-06-13 at 12:24 +0200, Alexander Larsson wrote: > NautilusFile is the nautilus async machinery. Take a look at for > instance docs/nautilus-io.txt and docs/nautilus-internals.pdf for some > details how it works. You can't really use this in a sync way (except if > you're lucky and the info was already cached). > Cool, so should I just aim to use stock sync and cached up file access functions from gnome-vfs ? (I understand from that you are suggesting to refrain from using the sync func of nautilus-io) Sivan From alexl@redhat.com Wed Jun 14 03:06:36 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8E1163B0014 for ; Wed, 14 Jun 2006 03:06:36 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20144-09 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2B58E3B0004 for ; Wed, 14 Jun 2006 03:06:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75miD013721; Wed, 14 Jun 2006 03:05:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75mMR009753; Wed, 14 Jun 2006 03:05:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E75l1O019900; Wed, 14 Jun 2006 03:05:48 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150238361.5853.0.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 09:05:47 +0200 Message-Id: <1150268748.3023.170.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 07:06:36 -0000 On Wed, 2006-06-14 at 01:39 +0300, Sivan Greenberg wrote: > > Cool, so should I just aim to use stock sync and cached up file access > functions from gnome-vfs ? (I understand from that you are suggesting > to > refrain from using the sync func of nautilus-io) You might as well use g_stat() if you're working on local files only. Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also an automatic check for local files, since it returns NULL for other uris.) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal pirate barbarian with a robot buddy named Sparky. She's a manipulative bisexual college professor from a different time and place. They fight crime! From sivan@ubuntu.com Wed Jun 14 05:35:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 16DF43B04FC for ; Wed, 14 Jun 2006 05:35:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26784-02 for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 8457E3B053D for ; Wed, 14 Jun 2006 05:35:21 -0400 (EDT) Received: from [192.168.1.222] (89-138-93-177.bb.netvision.net.il [89.138.93.177]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id E28F629CD05; Wed, 14 Jun 2006 11:34:00 +0200 (CEST) From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150268748.3023.170.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 12:34:06 +0300 Message-Id: <1150277646.6568.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:35:24 -0000 On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > You might as well use g_stat() if you're working on local files only. > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > an automatic check for local files, since it returns NULL for other > uris.) I hope it's going to be easy as it seems ;-). On a related note, why are g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , (gnome_vfs_get_file_info_uri()) Sivan From alexl@redhat.com Wed Jun 14 05:47:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id F0D593B040E for ; Wed, 14 Jun 2006 05:47:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27324-08 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 83C2E3B04B3 for ; Wed, 14 Jun 2006 05:47:30 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9keHl002050; Wed, 14 Jun 2006 05:46:40 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kZtw005095; Wed, 14 Jun 2006 05:46:35 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5E9kYt0002077; Wed, 14 Jun 2006 05:46:34 -0400 From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150277646.6568.16.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> Content-Type: text/plain Date: Wed, 14 Jun 2006 11:46:34 +0200 Message-Id: <1150278394.26621.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 09:47:32 -0000 On Wed, 2006-06-14 at 12:34 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 09:05 +0200, Alexander Larsson wrote: > > > You might as well use g_stat() if you're working on local files only. > > Just get a path with gnome_vfs_get_local_path_from_uri(). (This is also > > an automatic check for local files, since it returns NULL for other > > uris.) > > I hope it's going to be easy as it seems ;-). On a related note, why are > g_stat() and gnome_vfs_get_local_path_from_uri() cached while the ones > I've used in my patch are not? (gnome_vfs_get_local_path_from_uri() , > (gnome_vfs_get_file_info_uri()) They are not cached. You have to implement that yourself. The reason to use g_stat directly is just to avoid lots of levels of indirection and bloat when its not needed (i.e. you're only doing this for local files anyway). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a sword-wielding one-eyed jungle king on his last day in the job. She's a man-hating goth mercenary who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From sivan@ubuntu.com Wed Jun 14 09:28:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 748873B029B for ; Wed, 14 Jun 2006 09:28:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15163-07 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 29D2E3B0119 for ; Wed, 14 Jun 2006 09:28:04 -0400 (EDT) Received: from [192.168.2.101] (87.69.31.132.cable.012.net.il [87.69.31.132]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id BB0CC2A6BFD; Wed, 14 Jun 2006 15:27:18 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150278394.26621.1.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Wed, 14 Jun 2006 16:26:56 +0300 Message-Id: <1150291617.5322.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 13:28:07 -0000 On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > They are not cached. You have to implement that yourself. The reason to > use g_stat directly is just to avoid lots of levels of indirection and > bloat when its not needed (i.e. you're only doing this for local files > anyway). Ah, so this isn't as easy as it seems at first place. Is there anything in the nautilus file io stack that can help me implement the caching of those calls? (including the g_stat() call) Sivan From patrick.jacquotf@free.fr Wed Jun 14 15:43:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 870EF3B000E for ; Wed, 14 Jun 2006 15:43:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04192-03 for ; Wed, 14 Jun 2006 15:43:40 -0400 (EDT) Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by menubar.gnome.org (Postfix) with ESMTP id 6A4B33B0102 for ; Wed, 14 Jun 2006 15:43:39 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp1-g19.free.fr (Postfix) with ESMTP id 7F91C9AE0E; Wed, 14 Jun 2006 21:43:08 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1148904902.16920.15.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> Content-Type: multipart/mixed; boundary="=-6ha9yoI4TiErFtbzzRYq" Date: Wed, 14 Jun 2006 21:43:02 +0200 Message-Id: <1150314184.8687.75.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.511 tagged_above=-999 required=2 tests=[AWL=-0.066, BAYES_00=-2.599, TW_BF=0.077, TW_XB=0.077] X-Spam-Score: -2.511 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jun 2006 19:43:44 -0000 --=-6ha9yoI4TiErFtbzzRYq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > craps! since I installed the debuginfos, > > nautilus seems not to hang anymore. > > Good for you! :) > > Installing the debuginfos really shouldn't change anything though. They > are not used by anything but gdb. So, hopefully you'll eventually get > the hang again. > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc Yep! One more > -- Patrick --=-6ha9yoI4TiErFtbzzRYq Content-Disposition: attachment; filename=nautilushang2 Content-Type: text/plain; name=nautilushang2; charset=utf-8 Content-Transfer-Encoding: 7bit [pjacquot@neutron ~]$ ps ax|grep nautilus 2512 ? Ssl 0:43 nautilus --no-default-window --sm-client-id default3 6493 pts/3 S+ 0:00 grep nautilus [pjacquot@neutron ~]$ gdb /usr/bin/nautilus 2512 GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". Attaching to program: /usr/bin/nautilus, process 2512 Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa53000 `shared object read from target memory' has disappeared; keeping its symbols. Reading symbols from /usr/lib/libnautilus-private.so.2...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-private.so.2.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-private.so.2 Reading symbols from /usr/lib/libnautilus-extension.so.1...Reading symbols from /usr/lib/debug/usr/lib/libnautilus-extension.so.1.0.0.debug...done. done. Loaded symbols for /usr/lib/libnautilus-extension.so.1 Reading symbols from /usr/lib/libeel-2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libeel-2.so.2.10.0.debug...done. done. Loaded symbols for /usr/lib/libeel-2.so.2 Reading symbols from /usr/lib/libgailutil.so.17...done. Loaded symbols for /usr/lib/libgailutil.so.17 Reading symbols from /usr/lib/libglade-2.0.so.0...done. Loaded symbols for /usr/lib/libglade-2.0.so.0 Reading symbols from /usr/lib/librsvg-2.so.2...done. Loaded symbols for /usr/lib/librsvg-2.so.2 Reading symbols from /usr/lib/libesd.so.0...done. Loaded symbols for /usr/lib/libesd.so.0 Reading symbols from /usr/lib/libaudiofile.so.0...done. Loaded symbols for /usr/lib/libaudiofile.so.0 Reading symbols from /usr/lib/libgnome-desktop-2.so.2...done. Loaded symbols for /usr/lib/libgnome-desktop-2.so.2 Reading symbols from /usr/lib/libgnomeui-2.so.0...done. Loaded symbols for /usr/lib/libgnomeui-2.so.0 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /usr/lib/libbonoboui-2.so.0...done. Loaded symbols for /usr/lib/libbonoboui-2.so.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1208248096 (LWP 2512)] [New Thread -1215947856 (LWP 6420)] [New Thread -1214743632 (LWP 2551)] [New Thread -1214477392 (LWP 2550)] [New Thread -1214211152 (LWP 2549)] [New Thread -1213944912 (LWP 2548)] [New Thread -1213678672 (LWP 2547)] [New Thread -1213412432 (LWP 2546)] [New Thread -1213146192 (LWP 2545)] [New Thread -1212879952 (LWP 2544)] [New Thread -1212613712 (LWP 2543)] [New Thread -1212347472 (LWP 2542)] [New Thread -1212068944 (LWP 2526)] Loaded symbols for /lib/libpthread.so.0 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/lib/libgnomecanvas-2.so.0...done. Loaded symbols for /usr/lib/libgnomecanvas-2.so.0 Reading symbols from /usr/lib/libgnome-2.so.0...done. Loaded symbols for /usr/lib/libgnome-2.so.0 Reading symbols from /usr/lib/libart_lgpl_2.so.2...done. Loaded symbols for /usr/lib/libart_lgpl_2.so.2 Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoft2-1.0.so.0 Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.600.10.debug...done. done. Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0 Reading symbols from /usr/lib/libpangoxft-1.0.so.0...done. Loaded symbols for /usr/lib/libpangoxft-1.0.so.0 Reading symbols from /usr/lib/libpangox-1.0.so.0...done. Loaded symbols for /usr/lib/libpangox-1.0.so.0 Reading symbols from /usr/lib/libpango-1.0.so.0...done. Loaded symbols for /usr/lib/libpango-1.0.so.0 Reading symbols from /usr/lib/libgobject-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgobject-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgobject-2.0.so.0 Reading symbols from /usr/lib/libgnomevfs-2.so.0...done. Loaded symbols for /usr/lib/libgnomevfs-2.so.0 Reading symbols from /usr/lib/libbonobo-2.so.0...done. Loaded symbols for /usr/lib/libbonobo-2.so.0 Reading symbols from /usr/lib/libgconf-2.so.4...done. Loaded symbols for /usr/lib/libgconf-2.so.4 Reading symbols from /usr/lib/libbonobo-activation.so.4...done. Loaded symbols for /usr/lib/libbonobo-activation.so.4 Reading symbols from /usr/lib/libORBit-2.so.0...done. Loaded symbols for /usr/lib/libORBit-2.so.0 Reading symbols from /usr/lib/libgmodule-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgmodule-2.0.so.0 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /usr/lib/libgthread-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libgthread-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libgthread-2.0.so.0 Reading symbols from /usr/lib/libglib-2.0.so.0...Reading symbols from /usr/lib/debug/usr/lib/libglib-2.0.so.0.600.6.debug...done. done. Loaded symbols for /usr/lib/libglib-2.0.so.0 Reading symbols from /usr/lib/libstartup-notification-1.so.0...done. Loaded symbols for /usr/lib/libstartup-notification-1.so.0 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /lib/libm.so.6...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /usr/lib/libpopt.so.0...done. Loaded symbols for /usr/lib/libpopt.so.0 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libgnome-menu.so.0...done. Loaded symbols for /usr/lib/libgnome-menu.so.0 Reading symbols from /usr/X11R6/lib/libXrender.so.1...done. Loaded symbols for /usr/X11R6/lib/libXrender.so.1 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/lib/libgsf-1.so.1...done. Loaded symbols for /usr/lib/libgsf-1.so.1 Reading symbols from /usr/lib/libcroco-0.6.so.3...done. Loaded symbols for /usr/lib/libcroco-0.6.so.3 Reading symbols from /lib/libasound.so.2...done. Loaded symbols for /lib/libasound.so.2 Reading symbols from /usr/lib/libgnome-keyring.so.0...done. Loaded symbols for /usr/lib/libgnome-keyring.so.0 Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libfontconfig.so.1...done. Loaded symbols for /usr/lib/libfontconfig.so.1 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/X11R6/lib/libXrandr.so.2...done. Loaded symbols for /usr/X11R6/lib/libXrandr.so.2 Reading symbols from /usr/X11R6/lib/libXi.so.6...done. Loaded symbols for /usr/X11R6/lib/libXi.so.6 Reading symbols from /usr/X11R6/lib/libXinerama.so.1...done. Loaded symbols for /usr/X11R6/lib/libXinerama.so.1 Reading symbols from /usr/X11R6/lib/libXft.so.2...done. Loaded symbols for /usr/X11R6/lib/libXft.so.2 Reading symbols from /usr/X11R6/lib/libXfixes.so.3...done. Loaded symbols for /usr/X11R6/lib/libXfixes.so.3 Reading symbols from /usr/X11R6/lib/libXcursor.so.1...done. Loaded symbols for /usr/X11R6/lib/libXcursor.so.1 Reading symbols from /lib/libssl.so.5...done. Loaded symbols for /lib/libssl.so.5 Reading symbols from /lib/libcrypto.so.5...done. Loaded symbols for /lib/libcrypto.so.5 Reading symbols from /usr/lib/libgssapi_krb5.so.2...done. Loaded symbols for /usr/lib/libgssapi_krb5.so.2 Reading symbols from /usr/lib/libkrb5.so.3...done. Loaded symbols for /usr/lib/libkrb5.so.3 Reading symbols from /lib/libcom_err.so.2...done. Loaded symbols for /lib/libcom_err.so.2 Reading symbols from /usr/lib/libk5crypto.so.3...done. Loaded symbols for /usr/lib/libk5crypto.so.3 Reading symbols from /usr/lib/libhowl.so.0...done. Loaded symbols for /usr/lib/libhowl.so.0 Reading symbols from /lib/libresolv.so.2...done. Loaded symbols for /lib/libresolv.so.2 Reading symbols from /lib/librt.so.1...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /usr/lib/libORBitCosNaming-2.so.0...done. Loaded symbols for /usr/lib/libORBitCosNaming-2.so.0 Reading symbols from /usr/lib/libbz2.so.1...done. Loaded symbols for /usr/lib/libbz2.so.1 Reading symbols from /usr/lib/libexpat.so.0...done. Loaded symbols for /usr/lib/libexpat.so.0 Reading symbols from /usr/lib/libkrb5support.so.0...done. Loaded symbols for /usr/lib/libkrb5support.so.0 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 Reading symbols from /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2...done. Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2 Reading symbols from /usr/lib/gconv/ISO8859-1.so...done. Loaded symbols for /usr/lib/gconv/ISO8859-1.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so...done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libfile.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libfile.so Reading symbols from /usr/lib/libfam.so.0...done. Loaded symbols for /usr/lib/libfam.so.0 Reading symbols from /usr/lib/nautilus/extensions-1.0/libevince-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libevince-properties-page.soReading symbols from /usr/lib/libpoppler-glib.so.0...done. Loaded symbols for /usr/lib/libpoppler-glib.so.0 Reading symbols from /usr/lib/libpoppler.so.0...done. Loaded symbols for /usr/lib/libpoppler.so.0 Reading symbols from /usr/lib/libtiff.so.3...done. Loaded symbols for /usr/lib/libtiff.so.3 Reading symbols from /usr/lib/libstdc++.so.6...done. Loaded symbols for /usr/lib/libstdc++.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so Reading symbols from /usr/lib/libnautilus-burn.so.1...done. Loaded symbols for /usr/lib/libnautilus-burn.so.1 Reading symbols from /usr/X11R6/lib/libXtst.so.6...done. Loaded symbols for /usr/X11R6/lib/libXtst.so.6 Reading symbols from /usr/X11R6/lib/libXxf86vm.so.1...done. Loaded symbols for /usr/X11R6/lib/libXxf86vm.so.1 Reading symbols from /usr/lib/libgstgconf-0.8.so.0...done. Loaded symbols for /usr/lib/libgstgconf-0.8.so.0 Reading symbols from /usr/lib/libgstinterfaces-0.8.so.0...done. Loaded symbols for /usr/lib/libgstinterfaces-0.8.so.0 Reading symbols from /usr/lib/libgstreamer-0.8.so.1...done. Loaded symbols for /usr/lib/libgstreamer-0.8.so.1 Reading symbols from /usr/lib/libhal.so.1...done. Loaded symbols for /usr/lib/libhal.so.1 Reading symbols from /usr/lib/libdbus-1.so.1...done. Loaded symbols for /usr/lib/libdbus-1.so.1 Reading symbols from /lib/libnsl.so.1...done. Loaded symbols for /lib/libnsl.so.1 Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fontilus.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-burn-extension.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-fileroller.so Reading symbols from /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so...done. Loaded symbols for /usr/lib/nautilus/extensions-1.0/libnautilus-themus.so Reading symbols from /usr/lib/libgnome-window-settings.so.1...done. Loaded symbols for /usr/lib/libgnome-window-settings.so.1 Reading symbols from /usr/lib/libmetacity-private.so.0...done. Loaded symbols for /usr/lib/libmetacity-private.so.0 Reading symbols from /usr/lib/gnome-vfs-2.0/modules/libmapping.so...done. Loaded symbols for /usr/lib/gnome-vfs-2.0/modules/libmapping.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so Reading symbols from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so...done. Loaded symbols for /usr/lib/pango/1.4.0/modules/pango-basic-fc.so Reading symbols from /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so...Reading symbols from /usr/lib/debug/usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so.debug...done. done. Loaded symbols for /usr/lib/gtk-2.0/2.4.0/immodules/im-cedilla.so 0x00a53402 in __kernel_vsyscall () (gdb) thread apply all bt Thread 13 (Thread -1212068944 (LWP 2526)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00b98580 in poll () from /lib/libc.so.6 #2 0x00229328 in g_main_context_iterate (context=0x8903bc0, block=1, dispatch=1, self=0x8825b20) at gmain.c:2867 #3 0x002297c3 in IA__g_main_loop_run (loop=0x8901898) at gmain.c:2769 #4 0x074c43de in link_thread_io_context () from /usr/lib/libORBit-2.so.0 #5 0x00241ffa in g_thread_create_proxy (data=0x8825b20) at gthread.c:561 #6 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #7 0x00ba24fe in clone () from /lib/libc.so.6 Thread 12 (Thread -1212347472 (LWP 2542)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997410) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 11 (Thread -1212613712 (LWP 2543)): #0 0x00a53402 in __kernel_vsyscall () ---Type to continue, or q to quit--- #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997748) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 10 (Thread -1212879952 (LWP 2544)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997a80) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 9 (Thread -1213146192 (LWP 2545)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8997db8) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 8 (Thread -1213412432 (LWP 2546)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x89980f0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 7 (Thread -1213678672 (LWP 2547)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998428) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 6 (Thread -1213944912 (LWP 2548)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 ---Type to continue, or q to quit--- #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998760) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 5 (Thread -1214211152 (LWP 2549)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998a98) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 Thread 4 (Thread -1214477392 (LWP 2550)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00aa6876 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0755a2db in _gnome_vfs_thread_pool_init () from /usr/lib/libgnomevfs-2.so.0 #3 0x00241ffa in g_thread_create_proxy (data=0x8998dd0) at gthread.c:561 #4 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #5 0x00ba24fe in clone () from /lib/libc.so.6 ---Type to continue, or q to quit--- Thread 3 (Thread -1214743632 (LWP 2551)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fb90 in _L_mutex_lock_43 () from /lib/libc.so.6 #3 0x00cd259c in ?? () from /usr/X11R6/lib/libX11.so.6 #4 0x08810750 in ?? () #5 0x00bfcff4 in ?? () from /lib/libc.so.6 #6 0xb79861e8 in ?? () #7 0x00bfcff4 in ?? () from /lib/libc.so.6 #8 0x00bff660 in fork_handler_pool () from /lib/libc.so.6 #9 0x00000000 in ?? () Thread 2 (Thread -1215947856 (LWP 6420)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fc2c in _L_mutex_lock_3864 () from /lib/libc.so.6 #3 0xb7861354 in ?? () #4 0x08b8c3f8 in ?? () #5 0x0028717c in ?? () from /usr/lib/libglib-2.0.so.0 #6 0x08b8c3f8 in ?? () #7 0x08b8c3f8 in ?? () #8 0xb7861348 in ?? () ---Type to continue, or q to quit--- #9 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #10 0x0022cc24 in IA__g_free (mem=0x8d460c8) at gmem.c:187 #11 0x0023e8b6 in IA__g_strfreev (str_array=0x8d460c8) at gstrfuncs.c:2323 #12 0x0024e7aa in IA__g_spawn_command_line_sync ( command_line=0x8d48b80 "/usr/bin/totem-video-thumbnailer -s 128 'file:///home/pjacquot/A_tagguer/tcas2006-06-06.flac/tcas2006-06-06t01.ogg' '/tmp/.gnome_thumbnail.JzA9zX'", standard_output=0xfffffffc, standard_error=0xfffffffc, exit_status=0xfffffffc, error=0x0) at gspawn.c:656 #13 0x0076a122 in gnome_thumbnail_factory_generate_thumbnail () from /usr/lib/libgnomeui-2.so.0 #14 0x03f9f083 in thumbnail_thread_start (data=0x0) at nautilus-thumbnails.c:574 #15 0x00aa4bd4 in start_thread () from /lib/libpthread.so.0 #16 0x00ba24fe in clone () from /lib/libc.so.6 Thread 1 (Thread -1208248096 (LWP 2512)): #0 0x00a53402 in __kernel_vsyscall () #1 0x00bae87e in __lll_mutex_lock_wait () from /lib/libc.so.6 #2 0x00b3fda8 in _L_mutex_lock_9759 () from /lib/libc.so.6 #3 0xbf8ec82d in ?? () #4 0x000000fe in ?? () #5 0x0000000a in ?? () #6 0x00000001 in ?? () ---Type to continue, or q to quit--- #7 0x00000000 in ?? () (gdb) --=-6ha9yoI4TiErFtbzzRYq-- From alexl@redhat.com Thu Jun 15 03:31:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2922C3B002B for ; Thu, 15 Jun 2006 03:31:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19338-08 for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 96E493B00FE for ; Thu, 15 Jun 2006 03:31:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJGA017396; Thu, 15 Jun 2006 03:31:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VJPR008545; Thu, 15 Jun 2006 03:31:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7VIdM006092; Thu, 15 Jun 2006 03:31:18 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150314184.8687.75.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Thu, 15 Jun 2006 09:31:16 +0200 Message-Id: <1150356676.26621.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:31:24 -0000 On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : > > On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: > > > craps! since I installed the debuginfos, > > > nautilus seems not to hang anymore. > > > > Good for you! :) > > > > Installing the debuginfos really shouldn't change anything though. They > > are not used by anything but gdb. So, hopefully you'll eventually get > > the hang again. > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > Alexander Larsson Red Hat, Inc > > Yep! One more This one also has a totem-video-thumbnailer thread. If you disable all thumbnailers that use this, can you still reproduce? I.E. use gconf-editor and turn off all keys like: /desktop/gnome/thumbnailers/application@ogg/enable that mention totem-video-thumbnailer. The actual thumbnail is done in a separate process that is forked from nautilus, so I'm not sure how it could affect things in this way. However, evidence points to it... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave albino astronaut on his last day in the job. She's a sharp-shooting belly-dancing mermaid trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Thu Jun 15 03:32:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 08A5B3B0126 for ; Thu, 15 Jun 2006 03:32:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19413-06 for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 8B3E63B002B for ; Thu, 15 Jun 2006 03:32:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WfUL017815; Thu, 15 Jun 2006 03:32:41 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7Wa1T008783; Thu, 15 Jun 2006 03:32:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F7WZ5W006145; Thu, 15 Jun 2006 03:32:36 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150291617.5322.3.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> Content-Type: text/plain Date: Thu, 15 Jun 2006 09:32:35 +0200 Message-Id: <1150356755.26621.8.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 07:32:58 -0000 On Wed, 2006-06-14 at 16:26 +0300, Sivan Greenberg wrote: > On Wed, 2006-06-14 at 11:46 +0200, Alexander Larsson wrote: > > > They are not cached. You have to implement that yourself. The reason to > > use g_stat directly is just to avoid lots of levels of indirection and > > bloat when its not needed (i.e. you're only doing this for local files > > anyway). > > Ah, so this isn't as easy as it seems at first place. Is there anything > in the nautilus file io stack that can help me implement the caching of > those calls? (including the g_stat() call) I don't see what is hard about it. Just save the (boolean) result of your function call and its arguments, and then compare the stored values first in the function. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an unconventional moralistic Green Beret looking for 'the Big One.' She's a chain-smoking insomniac safe cracker descended from a line of powerful witches. They fight crime! From patrick.jacquot@anpe.fr Thu Jun 15 04:17:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DED9A3B0298 for ; Thu, 15 Jun 2006 04:17:30 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22167-05 for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from smtp3.lc.anpe.fr (smtp3.lc.anpe.fr [80.118.163.18]) by menubar.gnome.org (Postfix) with ESMTP id 45FFD3B00FE for ; Thu, 15 Jun 2006 04:17:24 -0400 (EDT) Received: from HOMERE02.anpe.fr (localhost.localdomain [127.0.0.1]) by smtp3.lc.anpe.fr (antivirus) with ESMTP id 9498573CB7; Thu, 15 Jun 2006 10:17:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE02.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 15 Jun 2006 10:15:57 +0200 Message-ID: <44911757.6070100@anpe.fr> Date: Thu, 15 Jun 2006 10:16:23 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> In-Reply-To: <1150356676.26621.5.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 15 Jun 2006 08:15:57.0655 (UTC) FILETIME=[EE03CE70:01C69053] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:17:31 -0000 Alexander Larsson wrote: >On Wed, 2006-06-14 at 21:43 +0200, Patrick Jacquot wrote: > > >>Le lundi 29 mai 2006 à 14:15 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-05-25 at 23:49 +0200, Patrick Jacquot wrote: >>> >>> >>>>craps! since I installed the debuginfos, >>>>nautilus seems not to hang anymore. >>>> >>>> >>>Good for you! :) >>> >>>Installing the debuginfos really shouldn't change anything though. They >>>are not used by anything but gdb. So, hopefully you'll eventually get >>>the hang again. >>> >>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >>> Alexander Larsson Red Hat, Inc >>> >>> >>Yep! One more >> >> > >This one also has a totem-video-thumbnailer thread. If you disable all >thumbnailers that use this, can you still reproduce? > >I.E. use gconf-editor and turn off all keys like: >/desktop/gnome/thumbnailers/application@ogg/enable >that mention totem-video-thumbnailer. > >The actual thumbnail is done in a separate process that is forked from >nautilus, so I'm not sure how it could affect things in this way. >However, evidence points to it... > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a suave albino astronaut on his last day in the job. She's a >sharp-shooting belly-dancing mermaid trying to make a difference in a man's >world. They fight crime! > > > I still wonder why Totem tries to make a video thumbnail from an Ogg Vorbis music file. Disabling that strange behavior will be a "lossless compression". Thank you for the pointer to gconf-editor From alexl@redhat.com Thu Jun 15 04:31:58 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4597A3B045B for ; Thu, 15 Jun 2006 04:31:58 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22773-09 for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F8DD3B045A for ; Thu, 15 Jun 2006 04:31:53 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8Vl3p004055; Thu, 15 Jun 2006 04:31:47 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VlIQ020296; Thu, 15 Jun 2006 04:31:47 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5F8VkBA014758; Thu, 15 Jun 2006 04:31:47 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44911757.6070100@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> Content-Type: text/plain Date: Thu, 15 Jun 2006 10:31:46 +0200 Message-Id: <1150360307.26621.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:31:58 -0000 On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > I still wonder why Totem tries to make a video thumbnail from an Ogg > Vorbis music file. Well, oggs are just one mimetype, and they can contain both video and/or audio, so its not easy to get this right. > Disabling that strange behavior will be a "lossless compression". > Thank you for the pointer to gconf-editor Please tell us if this fixes the problem for you. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a notorious shark-wrestling romance novelist whom everyone believes is mad. She's a sarcastic hip-hop magician's assistant in the witness protection program. They fight crime! From sivan@ubuntu.com Thu Jun 15 04:36:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C31D23B0155 for ; Thu, 15 Jun 2006 04:36:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23178-08 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id 5EC753B00F7 for ; Thu, 15 Jun 2006 04:36:31 -0400 (EDT) Received: from [192.168.1.222] (89.0.59.223.dynamic.barak-online.net [89.0.59.223]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 1F8982A6C13; Thu, 15 Jun 2006 10:36:22 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Thu, 15 Jun 2006 11:36:22 +0300 Message-Id: <1150360583.5504.4.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 08:36:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > I don't see what is hard about it. Just save the (boolean) result of > your function call and its arguments, and then compare the stored values > first in the function. Hmm, what I had in mind was much more complicated. This actually does sound sane, and fairly easy. I'll try to scribe something and reply here back for review. Cheers, and thanks for the directions. Sivan From ruaudel@embl.fr Thu Jun 15 07:58:30 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE6BA3B041F for ; Thu, 15 Jun 2006 07:58:29 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04112-09 for ; Thu, 15 Jun 2006 07:58:26 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CD7493B04B1 for ; Thu, 15 Jun 2006 07:58:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FBwNm20535; Thu, 15 Jun 2006 13:58:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp020384; Thu Jun 15 13:58:01 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 68FD93A009C; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 5D65A3A008B; Thu, 15 Jun 2006 13:57:14 +0200 (CEST) Message-ID: <44914B5C.8040003@embl.fr> Date: Thu, 15 Jun 2006 13:58:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: nautilus-list@gnome.org References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> In-Reply-To: <1146067801.621.43.camel@greebo> Content-Type: multipart/mixed; boundary=------------030804040701090309040506 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.47 tagged_above=-999 required=2 tests=[AWL=-0.007, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.47 X-Spam-Level: Cc: grumz@grumz.net X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 11:58:30 -0000 This is a multi-part message in MIME format. --------------030804040701090309040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, Here is my first patch proposal to fix Bug #339273. I would like to have your comments on it and ideally your approval :o) Sorry, but I didn't manage to compile a working Gnome 2.15.x environnement, so I did this patch against the last stable release of nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last CVS Head version. All the details are in the Bugzilla entry here : http://bugzilla.gnome.org/show_bug.cgi?id=339273 TIA, Regards, Fred Alexander Larsson wrote: >On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: > > > >>You means that should already works with the last version of nautilus, >>or the concept is ok and we have to develop it ? :) >> >> > >The later, unfortunately. :) > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a witless dishevelled cyborg living undercover at Ringling Bros. Circus. >She's an elegant out-of-work femme fatale who inherited a spooky stately manor >from her late maiden aunt. They fight crime! > > > --------------030804040701090309040506 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030804040701090309040506-- From ruaudel@embl.fr Thu Jun 15 08:30:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 9028C3B0445 for ; Thu, 15 Jun 2006 08:30:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06870-02 for ; Thu, 15 Jun 2006 08:30:00 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 9B2383B042C for ; Thu, 15 Jun 2006 08:29:59 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5FCTl110148; Thu, 15 Jun 2006 14:29:47 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp008288; Thu Jun 15 14:26:19 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 0C35E3A009C; Thu, 15 Jun 2006 14:25:32 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid E9DC23A008B; Thu, 15 Jun 2006 14:25:31 +0200 (CEST) Message-ID: <449151FE.2070906@embl.fr> Date: Thu, 15 Jun 2006 14:26:38 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo><444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo><444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44914B5C.8040003@embl.fr> In-Reply-To: <44914B5C.8040003@embl.fr> Content-Type: multipart/mixed; boundary=------------040407040200090207040807 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:30.64249 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.536 tagged_above=-999 required=2 tests=[AWL=0.062, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.536 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 12:30:02 -0000 This is a multi-part message in MIME format. --------------040407040200090207040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Here is a developement version of nautilus-actions which uses this new feature. ftp://ftp2.grumz.net/grumz/nautilus-actions.dev.tar.gz You must have the patched version of nautilus installed before since the configure script check for the existence of the new function. Once installed, you can test that when you create/modify/delete an action with nautilus-actions-config, the menus are updated immediately in nautilus. Regards, Fred RUAUDEL Frédéric wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > TIA, > > Regards, > > Fred > > Alexander Larsson wrote: > >> On Wed, 2006-04-26 at 17:32 +0200, RUAUDEL Frédéric wrote: >> >> >> >>> You means that should already works with the last version of >>> nautilus, or the concept is ok and we have to develop it ? :) >>> >> >> >> The later, unfortunately. :) >> >> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >> >> Alexander Larsson Red Hat, >> Inc alexl@redhat.com alla@lysator.liu.se He's a >> witless dishevelled cyborg living undercover at Ringling Bros. >> Circus. She's an elegant out-of-work femme fatale who inherited a >> spooky stately manor from her late maiden aunt. They fight crime! >> >> > --------------040407040200090207040807 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------040407040200090207040807-- From patrick.jacquotf@free.fr Thu Jun 15 13:36:49 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5A7663B0397 for ; Thu, 15 Jun 2006 13:36:49 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25173-04 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by menubar.gnome.org (Postfix) with ESMTP id 538763B0311 for ; Thu, 15 Jun 2006 13:36:24 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp3-g19.free.fr (Postfix) with ESMTP id 6676E4444D; Thu, 15 Jun 2006 19:34:32 +0200 (CEST) Subject: Re: nautilus hangs occasionnaly on a right click From: Patrick Jacquot To: Alexander Larsson In-Reply-To: <1150360307.26621.28.camel@greebo> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> Content-Type: text/plain; charset=utf-8 Date: Thu, 15 Jun 2006 19:34:26 +0200 Message-Id: <1150392867.8687.79.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 (2.6.1-1.fc5.2) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.585 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599] X-Spam-Score: -2.585 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jun 2006 17:36:49 -0000 Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > Vorbis music file. > > Disabling that strange behavior will be a "lossless compression". > > Thank you for the pointer to gconf-editor > > Please tell us if this fixes the problem for you. > > Alexander Larsson Red Hat, Inc I asked Nautilus not to give a pre"view" for any sound. I hope it will be sufficient, because I didn't find any other means to disable the calls to Totem -- Patrick From alexl@redhat.com Fri Jun 16 03:13:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA2653B002C for ; Fri, 16 Jun 2006 03:13:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20384-08 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id A6B853B0011 for ; Fri, 16 Jun 2006 03:13:54 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8Y3006797; Fri, 16 Jun 2006 02:45:08 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j8bO013639; Fri, 16 Jun 2006 02:45:08 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G6j6oC001946; Fri, 16 Jun 2006 02:45:07 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <1150392867.8687.79.camel@proton> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 08:45:06 +0200 Message-Id: <1150440307.26621.41.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 07:13:58 -0000 On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : > > On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: > > > > > I still wonder why Totem tries to make a video thumbnail from an Ogg > > > Vorbis music file. > > > Disabling that strange behavior will be a "lossless compression". > > > Thank you for the pointer to gconf-editor > > > > Please tell us if this fixes the problem for you. > > > > Alexander Larsson Red Hat, Inc > > I asked Nautilus not to give a pre"view" for any sound. I hope it will > be sufficient, because I didn't find any other means to disable the > calls to Totem Eh, disabling the thumbnailers in gconf-editor like i wrote in an earlier mail should do that. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an ungodly alcoholic librarian on the run. She's a bloodthirsty kleptomaniac opera singer from out of town. They fight crime! From sivan@ubuntu.com Fri Jun 16 04:03:32 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21E6E3B0076 for ; Fri, 16 Jun 2006 04:03:32 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21280-09 for ; Fri, 16 Jun 2006 04:03:28 -0400 (EDT) Received: from box79162.elkhouse.de (piware.de [213.9.79.162]) by menubar.gnome.org (Postfix) with ESMTP id E8EC33B0011 for ; Fri, 16 Jun 2006 04:03:27 -0400 (EDT) Received: from badtemperrodent.net (badtemperrodent.net [192.117.110.191]) (using SSLv3 with cipher RC4-MD5 (128/128 bits)) (Client did not present a certificate) by box79162.elkhouse.de (Postfix) with ESMTP id 8CFB82A6BFF; Fri, 16 Jun 2006 09:41:56 +0200 (CEST) Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Sivan Greenberg To: Alexander Larsson In-Reply-To: <1150356755.26621.8.camel@greebo> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> Content-Type: text/plain Organization: Ubuntu Member Date: Fri, 16 Jun 2006 10:39:05 +0300 Message-Id: <1150443545.5513.18.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.464 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.464 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list Reply-To: sivan@ubuntu.com List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:03:32 -0000 On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > your function call and its arguments, and then compare the stored values > first in the function. Alex, re caching implementation , I have a top level sketch in mind, would like to hear your opinion: 1) The cache encapsulating function will be called something like "cached_uri_info". 2) First time the function is called, there will be ofcourse no caching. called params and results will be queued. Now, I figured I would better have something that would act like a cyclic queue, e.g. overwriting old values each time a cycle is completed. Now how long back should values be cached ? Should it go back as long as memory allows? Sivan From alexl@redhat.com Fri Jun 16 04:16:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7A853B002C for ; Fri, 16 Jun 2006 04:16:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22202-08 for ; Fri, 16 Jun 2006 04:16:00 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F40B13B006C for ; Fri, 16 Jun 2006 04:15:59 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F9j6000439; Fri, 16 Jun 2006 04:15:09 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F46p028945; Fri, 16 Jun 2006 04:15:04 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8F3cm012357; Fri, 16 Jun 2006 04:15:03 -0400 Subject: Re: Patch to fix #314139 [REVISION PROPOSAL] From: Alexander Larsson To: sivan@ubuntu.com In-Reply-To: <1150443545.5513.18.camel@localhost> References: <1149074455.5848.7.camel@localhost> <1149705572.8926.8.camel@localhost> <1150106076.3023.105.camel@greebo> <1150192797.6544.16.camel@localhost> <1150194254.3023.167.camel@greebo> <1150238361.5853.0.camel@localhost> <1150268748.3023.170.camel@greebo> <1150277646.6568.16.camel@localhost> <1150278394.26621.1.camel@greebo> <1150291617.5322.3.camel@localhost> <1150356755.26621.8.camel@greebo> <1150443545.5513.18.camel@localhost> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:15:03 +0200 Message-Id: <1150445703.26621.60.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:16:01 -0000 On Fri, 2006-06-16 at 10:39 +0300, Sivan Greenberg wrote: > On Thu, 2006-06-15 at 09:32 +0200, Alexander Larsson wrote: > > your function call and its arguments, and then compare the stored values > > first in the function. > > Alex, re caching implementation , I have a top level sketch in mind, > would like to hear your opinion: > > 1) The cache encapsulating function will be called something like > "cached_uri_info". > 2) First time the function is called, there will be ofcourse no caching. > called params and results will be queued. > > > Now, I figured I would better have something that would act like a > cyclic queue, e.g. overwriting old values each time a cycle is > completed. > > Now how long back should values be cached ? Should it go back as long as > memory allows? Nah, this sounds way to complicated. You just save *one* value for the last check, and save it for the drag operation. Something like: struct MoveConvertCache { char *source_uri; char *target_uri; gboolean res; } static gboolean should_convert_move_to_copy (GdkDragContext *context, const char *source_uri, const char *target_uri) { struct MoveConvertCache *cache; gboolean res; cache = g_object_get_data (context, "move-convert-cache"); if (cache != NULL && strcmp(cache->source_uri, source_uri) == 0 && strcmp(cache->target_uri, target_uri) == 0) { return cache->res; } res = ...; cache = g_new (struct MoveConvertCache, 1); cache->res = res; cache->source_uri = g_strdup (source_uri); cache->target_uri = g_strdup (target_uri); g_object_set_data_full (context, "move-convert-cache", cache, free_move_convert_cache); return res; } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged shark-wrestling barbarian fleeing from a secret government programme. She's a hard-bitten extravagent college professor who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From alexl@redhat.com Fri Jun 16 04:41:12 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 557D03B0011 for ; Fri, 16 Jun 2006 04:41:12 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22567-09 for ; Fri, 16 Jun 2006 04:41:11 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id CFBBB3B0007 for ; Fri, 16 Jun 2006 04:41:10 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8Za55006178; Fri, 16 Jun 2006 04:35:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZV2m032257; Fri, 16 Jun 2006 04:35:31 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G8ZUux013456; Fri, 16 Jun 2006 04:35:30 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: Frederic Ruaudel In-Reply-To: <44912C28.70406@grumz.net> References: <444628BD.70100@embl.fr> <1146058679.621.25.camel@greebo> <444F8B44.5050103@embl.fr> <1146064306.621.41.camel@greebo> <444F92A9.7030707@embl.fr> <1146067801.621.43.camel@greebo> <44912C28.70406@grumz.net> Content-Type: text/plain Date: Fri, 16 Jun 2006 10:35:30 +0200 Message-Id: <1150446930.26621.70.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 08:41:12 -0000 On Thu, 2006-06-15 at 11:45 +0200, Frederic Ruaudel wrote: > Hi again, > > Here is my first patch proposal to fix Bug #339273. I would like to > have your comments on it and ideally your approval :o) > > Sorry, but I didn't manage to compile a working Gnome 2.15.x > environnement, so I did this patch against the last stable release of > nautilus on FC5 : 2.14.1. If needed I can try to adapt it to the last > CVS Head version. > > All the details are in the Bugzilla entry here : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 Some comments on the patch: + + /* Signals */ + void (*items_updated) (NautilusMenuProvider *provider, + GtkWidget *window, + gpointer *data); This adds a member to an interface implemented by others, which is a binary incompatible change. Fortunately its not needed, as the implementations have no need for a default handler for the signal, they are the ones that omit it anyway. Also, i see no need to pass in the window. Keeping track of that should not be needed by the extensions. static void +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer data) I don't like this at all. You're hardcoding lots of knowledge about the implementation of windows and views in a general place. A better approach would be to create a new signal "menu_extensions_changed" in NautilusSignaller and have the windows and views listen to that signal and re-read their extension menus when its emitted. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an impetuous hunchbacked filmmaker on a mission from God. She's an artistic extravagent bounty hunter with a song in her heart and a spring in her step. They fight crime! From rubin@xs4all.nl Fri Jun 16 05:04:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 98D7C3B002C for ; Fri, 16 Jun 2006 05:04:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23115-09 for ; Fri, 16 Jun 2006 05:04:27 -0400 (EDT) Received: from smtp-vbr11.xs4all.nl (smtp-vbr11.xs4all.nl [194.109.24.31]) by menubar.gnome.org (Postfix) with ESMTP id C07BF3B0007 for ; Fri, 16 Jun 2006 05:04:26 -0400 (EDT) Received: from [172.16.0.167] (a82-94-101-162.adsl.xs4all.nl [82.94.101.162]) (authenticated bits=0) by smtp-vbr11.xs4all.nl (8.13.6/8.13.6) with ESMTP id k5G93fN8053607 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Fri, 16 Jun 2006 11:03:41 +0200 (CEST) (envelope-from rubin@xs4all.nl) Subject: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Rubin To: nautilus-list@gnome.org Content-Type: text/plain Date: Fri, 16 Jun 2006 11:03:41 +0200 Message-Id: <1150448621.29988.7.camel@thinkpad> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-Mailman-Approved-At: Fri, 16 Jun 2006 05:24:20 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:04:28 -0000 Hi Nautilus List, I'm not a member of the list (yet) but I have a question of which I have been unable to find the answer to in the usual way. I have configured my Nautilus to show mounted filesystems on my desktop and not show anything else. This looks and works great for me: http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% 20Desktop%203.png What I would like for the sake of consistency however, is to also display my "/" on the desktop, since this is also a mounted fs (no, a .desktop does not cut it ;-). This behaviour would be a little like Mac OS X (which shows the Macintosh HD root volume on the desktop). How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when replying to this! Thanks! Rubin. From alexl@redhat.com Fri Jun 16 05:55:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id A4FE73B000B for ; Fri, 16 Jun 2006 05:55:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24488-05 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 411CE3B0012 for ; Fri, 16 Jun 2006 05:55:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXBo031898; Fri, 16 Jun 2006 05:54:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sXTM013747; Fri, 16 Jun 2006 05:54:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5G9sW3W017065; Fri, 16 Jun 2006 05:54:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492739C.3080608@embl.fr> References: <4492739C.3080608@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 11:54:32 +0200 Message-Id: <1150451672.26621.77.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 09:55:38 -0000 On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > Thanks for the review, > > > + /* Signals */ > > + void (*items_updated) (NautilusMenuProvider *provider, > > + GtkWidget *window, > > + gpointer *data); > > This adds a member to an interface implemented by others, which is a > > binary incompatible change. Fortunately its not needed, as the > > implementations have no need for a default handler for the signal, they > > are the ones that omit it anyway. > > Ok, I can remove it. I put it in the end of the structure to avoid > having to recompile other extensions. But for my general knowledge, when > can we change the binary compatibility ? in the CVS head or in any > version before a feature freeze scheduled date ? Well, we don't really have a strict policy here. We'd like to do backwards incompatible changes as seldom as we can, as that would require us to bump the soname on libnautilus-extension and force all extensions to be rebuilt. But if we feel some change is important we can of course do this. Its debatable whether adding the signal to the end like that is backwards compat or not. For an old extension they will be passing a vtable that has an undefined pointer for items_updated. However, in practice that signal is not likely to be emitted for the object, since its normally emitted by the extension... Anyway, we just don't need it there. > > Also, i see no need to pass in the window. Keeping track of that should > > not be needed by the extensions. > > This was to find back the view which have the current selected menu in > nautilus but maybe I can find another way. Do you have any tips for that > ? Is there a get_current_view() function anywhere ? Or maybe should I > have to update all views ? With the NautilusSignaller (or similar) approach you don't have this problem, because a visible view will update itself when it gets the signal it connected to. No need to "find" it. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious inventor from the 'hood. She's a mistrustful tempestuous fairy princess prone to fits of savage, blood-crazed rage. They fight crime! From alexl@redhat.com Fri Jun 16 08:13:04 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 21C553B006C for ; Fri, 16 Jun 2006 08:13:04 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27898-03 for ; Fri, 16 Jun 2006 08:13:03 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DC1763B002C for ; Fri, 16 Jun 2006 08:13:02 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCPrp006369; Fri, 16 Jun 2006 08:12:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCKTB004736; Fri, 16 Jun 2006 08:12:20 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCCJn6025533; Fri, 16 Jun 2006 08:12:20 -0400 Subject: Re: nautilus hangs occasionnaly on a right click From: Alexander Larsson To: Patrick Jacquot In-Reply-To: <44929BCF.2080909@anpe.fr> References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> <44929BCF.2080909@anpe.fr> Content-Type: text/plain Date: Fri, 16 Jun 2006 14:12:19 +0200 Message-Id: <1150459940.26621.88.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:13:04 -0000 On Fri, 2006-06-16 at 13:53 +0200, Patrick Jacquot wrote: > yes, that should do, but I'd like to have a preview of my .jpg's They are handled internally anyway, plus you can disable only the ones using totem if you want. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a jaded overambitious card sharp from the 'hood. She's a brilliant snooty safe cracker with a birthmark shaped like Liberty's torch. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:27:57 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 064A53B0011 for ; Fri, 16 Jun 2006 08:27:57 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28295-08 for ; Fri, 16 Jun 2006 08:27:55 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id CB2B33B002C for ; Fri, 16 Jun 2006 08:27:54 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCR3Z13371; Fri, 16 Jun 2006 14:27:03 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp013140; Fri Jun 16 14:26:43 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id B41023A009C; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid A52D83A008B; Fri, 16 Jun 2006 14:25:55 +0200 (CEST) Message-ID: <4492A396.6040708@embl.fr> Date: Fri, 16 Jun 2006 14:27:02 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> In-Reply-To: <1150460132.26621.91.camel@greebo> Content-Type: multipart/mixed; boundary=------------090102050009040200050407 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:93.88275 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.474 tagged_above=-999 required=2 tests=[AWL=-0.011, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.474 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:27:57 -0000 This is a multi-part message in MIME format. --------------090102050009040200050407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > > >>Hi again, >> >>The new patch proposal is available in bugzilla : >> >>http://bugzilla.gnome.org/show_bug.cgi?id=339273 >> >>Indeed, the use of the NautilusSignaller API is much cleaner and require >>less code :) >> >> > >Looks much better. > Great ! >However, I'd prefer if this part: > >+ /* Update window's current selection popup menu */ >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > >Was actually done by FMDirectoryView (by also listening to the signal). >We don't really guarantee that window->content_view is a FMDirectoryView >(although it always is right now). > > I planned to do this at first, but to do this I have to include the nautilus-signaller.h file into the file-manager static library and it seems to me that it is not very clean. Is there a clean way to access the NautilusSignaller from within the file-manager library ? --------------090102050009040200050407 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090102050009040200050407-- From alexl@redhat.com Fri Jun 16 08:36:45 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8EEAD3B00A2 for ; Fri, 16 Jun 2006 08:36:40 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28772-01 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 3F2483B0076 for ; Fri, 16 Jun 2006 08:36:35 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCa32c012746; Fri, 16 Jun 2006 08:36:03 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZwoG008648; Fri, 16 Jun 2006 08:35:58 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCZvod026619; Fri, 16 Jun 2006 08:35:58 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A396.6040708@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:35:57 +0200 Message-Id: <1150461357.26621.94.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:36:45 -0000 On Fri, 2006-06-16 at 14:27 +0200, RUAUDEL Frédéric wrote: > Alexander Larsson wrote: > >However, I'd prefer if this part: > > > >+ /* Update window's current selection popup menu */ > >+ fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); > > > >Was actually done by FMDirectoryView (by also listening to the signal). > >We don't really guarantee that window->content_view is a FMDirectoryView > >(although it always is right now). > > > I planned to do this at first, but to do this I have to include the > nautilus-signaller.h file into the file-manager static library and it > seems to me that it is not very clean. Is there a clean way to access > the NautilusSignaller from within the file-manager library ? Seems we have to move NautilusSignaller to libnautilus-private. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed drug-addicted photographer on the run. She's a ditzy gold-digging queen of the dead on her way to prison for a murder she didn't commit. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:41:38 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CE0873B0007 for ; Fri, 16 Jun 2006 08:41:38 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28628-04 for ; Fri, 16 Jun 2006 08:41:37 -0400 (EDT) Received: from out.esrf.fr (firewall.esrf.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 728BA3B0076 for ; Fri, 16 Jun 2006 08:41:35 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCebu21324; Fri, 16 Jun 2006 14:40:37 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021209; Fri Jun 16 14:40:26 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 6113F3A009C; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid 569F63A008B; Fri, 16 Jun 2006 14:39:39 +0200 (CEST) Message-ID: <4492A6CE.1040904@embl.fr> Date: Fri, 16 Jun 2006 14:40:46 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> In-Reply-To: <1150461357.26621.94.camel@greebo> Content-Type: multipart/mixed; boundary=------------020601000705080507000607 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.542 tagged_above=-999 required=2 tests=[AWL=0.056, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.542 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:41:39 -0000 This is a multi-part message in MIME format. --------------020601000705080507000607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>> >>> >>I planned to do this at first, but to do this I have to include the >>nautilus-signaller.h file into the file-manager static library and it >>seems to me that it is not very clean. Is there a clean way to access >>the NautilusSignaller from within the file-manager library ? >> >> > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > Yes, maybe.. it would probably be cleaner but after looking again to the code, I saw a "emblem_changed" signal used in the file-manager AND in the nautilus-signaller but the one in the file-manager don't use the nautilus-signaller API so if you confirm me that they are related, I can try to implement my signal the same way. I'll try to dig a little bit in this direction. --------------020601000705080507000607 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------020601000705080507000607-- From patrick.jacquot@anpe.fr Fri Jun 16 08:45:13 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8114F3B0074 for ; Fri, 16 Jun 2006 08:45:13 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28690-06 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from smtp2.lc.anpe.fr (smtp2.lc.anpe.fr [80.118.163.16]) by menubar.gnome.org (Postfix) with ESMTP id 5012E3B0012 for ; Fri, 16 Jun 2006 08:45:07 -0400 (EDT) Received: from HOMERE01.anpe.fr (amadeus [127.0.0.1]) by smtp2.lc.anpe.fr (antivirus) with ESMTP id 39F4673C9C; Fri, 16 Jun 2006 13:54:20 +0200 (CEST) Received: from [10.0.32.170] ([10.0.32.170]) by HOMERE01.anpe.fr with Microsoft SMTPSVC(6.0.3790.1830); Fri, 16 Jun 2006 13:53:25 +0200 Message-ID: <44929BCF.2080909@anpe.fr> Date: Fri, 16 Jun 2006 13:53:51 +0200 From: Patrick Jacquot User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Subject: Re: nautilus hangs occasionnaly on a right click References: <1148066990.22742.20.camel@proton> <1148477096.4735.17.camel@greebo> <1148589532.8687.17.camel@proton> <51419b2c0605251402n2ed169c0hfed0d81bc7007a0d@mail.gmail.com> <1148593746.8687.25.camel@proton> <1148904902.16920.15.camel@greebo> <1150314184.8687.75.camel@proton> <1150356676.26621.5.camel@greebo> <44911757.6070100@anpe.fr> <1150360307.26621.28.camel@greebo> <1150392867.8687.79.camel@proton> <1150440307.26621.41.camel@greebo> In-Reply-To: <1150440307.26621.41.camel@greebo> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 16 Jun 2006 11:53:25.0151 (UTC) FILETIME=[795772F0:01C6913B] X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: Cc: "nautilus-list@gnome.org" X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:45:13 -0000 Alexander Larsson wrote: >On Thu, 2006-06-15 at 19:34 +0200, Patrick Jacquot wrote: > > >>Le jeudi 15 juin 2006 à 10:31 +0200, Alexander Larsson a écrit : >> >> >>>On Thu, 2006-06-15 at 10:16 +0200, Patrick Jacquot wrote: >>> >>> >>> >>>>I still wonder why Totem tries to make a video thumbnail from an Ogg >>>>Vorbis music file. >>>>Disabling that strange behavior will be a "lossless compression". >>>>Thank you for the pointer to gconf-editor >>>> >>>> >>>Please tell us if this fixes the problem for you. >>> >>> Alexander Larsson Red Hat, Inc >>> >>> >>I asked Nautilus not to give a pre"view" for any sound. I hope it will >>be sufficient, because I didn't find any other means to disable the >>calls to Totem >> >> > >Eh, disabling the thumbnailers in gconf-editor like i wrote in an >earlier mail should do that. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's an ungodly alcoholic librarian on the run. She's a bloodthirsty >kleptomaniac opera singer from out of town. They fight crime! > > > > yes, that should do, but I'd like to have a preview of my .jpg's From alexl@redhat.com Fri Jun 16 08:49:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 485F93B002C for ; Fri, 16 Jun 2006 08:49:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29026-04 for ; Fri, 16 Jun 2006 08:49:19 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C6C253B0007 for ; Fri, 16 Jun 2006 08:49:18 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPNN016840; Fri, 16 Jun 2006 08:48:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmPYD011183; Fri, 16 Jun 2006 08:48:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCmOqK027223; Fri, 16 Jun 2006 08:48:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A6CE.1040904@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:48:24 +0200 Message-Id: <1150462104.1962.1.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:49:20 -0000 On Fri, 2006-06-16 at 14:40 +0200, RUAUDEL Frédéric wrote: > > Alexander Larsson wrote: > > >>> > >>> > >>I planned to do this at first, but to do this I have to include the > >>nautilus-signaller.h file into the file-manager static library and it > >>seems to me that it is not very clean. Is there a clean way to access > >>the NautilusSignaller from within the file-manager library ? > >> > >> > > > >Seems we have to move NautilusSignaller to libnautilus-private. > > > > > > > > > Yes, maybe.. it would probably be cleaner but after looking again to the > code, I saw a "emblem_changed" signal used in the file-manager AND in > the nautilus-signaller but the one in the file-manager don't use the > nautilus-signaller API so if you confirm me that they are related, I can > try to implement my signal the same way. I'll try to dig a little bit in > this direction. They have the same name, but they are used for different things. One is a global "we added an emblem" thing, while the other is directory specific, where what auto-emblems to use might have changed due to a permission change. I think we have to move the signaller. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish gay paramedic with a secret. She's a cosmopolitan belly-dancing vampire who believes she is the reincarnation of an ancient Egyptian queen. They fight crime! From ruaudel@embl.fr Fri Jun 16 08:55:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D29373B0012 for ; Fri, 16 Jun 2006 08:55:43 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29229-01 for ; Fri, 16 Jun 2006 08:55:42 -0400 (EDT) Received: from out.esrf.fr (firewall.sfn.asso.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 1229B3B0007 for ; Fri, 16 Jun 2006 08:55:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GCrIL28510; Fri, 16 Jun 2006 14:53:18 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp028490; Fri Jun 16 14:53:17 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E00233A009C; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid D44943A008B; Fri, 16 Jun 2006 14:52:29 +0200 (CEST) Message-ID: <4492A9D0.1030804@embl.fr> Date: Fri, 16 Jun 2006 14:53:36 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> In-Reply-To: <1150462104.1962.1.camel@greebo> Content-Type: multipart/mixed; boundary=------------070000060703070709040705 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 12:55:44 -0000 This is a multi-part message in MIME format. --------------070000060703070709040705 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Larsson wrote: >>Yes, maybe.. it would probably be cleaner but after looking again to the >>code, I saw a "emblem_changed" signal used in the file-manager AND in >>the nautilus-signaller but the one in the file-manager don't use the >>nautilus-signaller API so if you confirm me that they are related, I can >>try to implement my signal the same way. I'll try to dig a little bit in >>this direction. >> >> > >They have the same name, but they are used for different things. One is >a global "we added an emblem" thing, while the other is directory >specific, where what auto-emblems to use might have changed due to a >permission change. > >I think we have to move the signaller. > > > > Ok I will try to do this. Should I have to generate a separate patch for this or not ? and maybe open a new bug entry ? --------------070000060703070709040705 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------070000060703070709040705-- From alexl@redhat.com Fri Jun 16 09:09:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B9E0D3B0076 for ; Fri, 16 Jun 2006 09:09:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29459-05 for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 570133B002C for ; Fri, 16 Jun 2006 09:09:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8PQk023537; Fri, 16 Jun 2006 09:08:25 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8Ptc015871; Fri, 16 Jun 2006 09:08:25 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GD8NU0029583; Fri, 16 Jun 2006 09:08:24 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492A9D0.1030804@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 15:08:24 +0200 Message-Id: <1150463304.1962.5.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 13:09:10 -0000 On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > >They have the same name, but they are used for different things. One is > >a global "we added an emblem" thing, while the other is directory > >specific, where what auto-emblems to use might have changed due to a > >permission change. > > > >I think we have to move the signaller. > > > Ok I will try to do this. Should I have to generate a separate patch for > this or not ? and maybe open a new bug entry ? Nah, just send me a combined patch. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting coffee-fuelled boxer with acid for blood. She's a time-travelling African-American vampire on the trail of a serial killer. They fight crime! From chris@gnome-de.org Fri Jun 16 10:02:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id D214C3B0012 for ; Fri, 16 Jun 2006 10:02:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30453-09 for ; Fri, 16 Jun 2006 10:02:06 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 8119F3B000B for ; Fri, 16 Jun 2006 10:02:04 -0400 (EDT) Received: (qmail 95134 invoked by uid 85); 16 Jun 2006 14:01:10 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.188.32):. Processed in 4.939873 secs); 16 Jun 2006 14:01:10 -0000 Received: from p5496bc20.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.188.32) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 16 Jun 2006 14:01:05 -0000 Subject: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-72GyeevQ02c61O4EiZxt" Date: Fri, 16 Jun 2006 16:01:00 +0200 Message-Id: <1150466460.16424.7.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.51 tagged_above=-999 required=2 tests=[AWL=-0.065, BAYES_00=-2.599, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.51 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:02:08 -0000 --=-72GyeevQ02c61O4EiZxt Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch is a new attempt to implement session management, this time the calls are proxied through NautilusShell (thus operating on the server), session names are generated on the fly and a "--load-session" parameter was added. Also, the session file is not removed when it is not readable or no regular file, so that one can manually load a particular session on startup. -- Christian Neumair --=-72GyeevQ02c61O4EiZxt Content-Disposition: attachment; filename=nautilus-sm2.diff Content-Type: text/x-patch; name=nautilus-sm2.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit ? src/.nautilus-application.c.swp Index: configure.in =================================================================== RCS file: /cvs/gnome/nautilus/configure.in,v retrieving revision 1.675 diff -u -p -r1.675 configure.in --- configure.in 12 Jun 2006 12:35:55 -0000 1.675 +++ configure.in 16 Jun 2006 13:58:45 -0000 @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.226 diff -u -p -r1.226 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 18 Mar 2006 07:13:49 -0000 1.226 +++ libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 13:58:48 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.132 diff -u -p -r1.132 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 15 Dec 2005 14:32:57 -0000 1.132 +++ libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 13:58:49 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 16 Jun 2006 13:58:49 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 16 Jun 2006 13:59:00 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1139,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1172,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1326,265 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + g_message ("is %s\n", filename); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[4] = { NULL }; + + argv[0] = "nautilus"; + argv[1] = "--no-default-window"; + + argv[3] = save_session_to_file (); + if (argv[3] != NULL) { + argv[2] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[3] != NULL) { + g_free (argv[3]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 16 Jun 2006 13:59:00 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 16 Jun 2006 13:59:01 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,8 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + N_("Load a saved session from the specified file."), N_("FILENAME") }, { NULL } }; @@ -243,6 +246,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -349,6 +353,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 16 Jun 2006 13:59:05 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 16 Jun 2006 13:59:05 -0000 @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); void start_desktop (); void stop_desktop (); void quit (); Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 16 Jun 2006 13:59:06 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 16 Jun 2006 13:59:08 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 16 Jun 2006 13:59:14 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 16 Jun 2006 13:59:15 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 16 Jun 2006 13:59:19 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-72GyeevQ02c61O4EiZxt-- From ruaudel@embl.fr Fri Jun 16 10:17:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 041543B0007 for ; Fri, 16 Jun 2006 10:17:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31262-02 for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 409803B000B for ; Fri, 16 Jun 2006 10:17:25 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GEEN515027; Fri, 16 Jun 2006 16:14:23 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp014897; Fri Jun 16 16:14:14 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id E9D453A00A3; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid BD85C3A009C; Fri, 16 Jun 2006 16:13:27 +0200 (CEST) Message-ID: <4492BCC9.3070701@embl.fr> Date: Fri, 16 Jun 2006 16:14:34 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> In-Reply-To: <1150463304.1962.5.camel@greebo> Content-Type: multipart/mixed; boundary=------------030607090300020602080800 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:12 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.475 tagged_above=-999 required=2 tests=[AWL=-0.012, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.475 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:17:27 -0000 This is a multi-part message in MIME format. --------------030607090300020602080800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Alexander Larsson wrote: >On Fri, 2006-06-16 at 14:53 +0200, RUAUDEL Frédéric wrote: > > > >>>They have the same name, but they are used for different things. One is >>>a global "we added an emblem" thing, while the other is directory >>>specific, where what auto-emblems to use might have changed due to a >>>permission change. >>> >>>I think we have to move the signaller. >>> >>> >>> >>Ok I will try to do this. Should I have to generate a separate patch for >>this or not ? and maybe open a new bug entry ? >> >> > >Nah, just send me a combined patch. > > > > New patch available in Bugzilla. The move was quite easy, just move the two nautilus-signaller.[ch] files, change the Makefile.am and change the #includes in the different files using it. I think now we are near the perfection ;oP Regards, Fred --------------030607090300020602080800 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------030607090300020602080800-- From alexl@redhat.com Fri Jun 16 10:40:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 69B0D3B000B for ; Fri, 16 Jun 2006 10:40:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31864-09 for ; Fri, 16 Jun 2006 10:40:38 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id F30943B0074 for ; Fri, 16 Jun 2006 10:40:37 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJwW018100 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMJj5001340 for ; Fri, 16 Jun 2006 10:22:19 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GEMI38001834 for ; Fri, 16 Jun 2006 10:22:18 -0400 Subject: New permissions page From: Alexander Larsson To: Nautilus Content-Type: text/plain Date: Fri, 16 Jun 2006 16:22:18 +0200 Message-Id: <1150467738.1962.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:40:39 -0000 I just commited a rework of the permissions page in the file property dialog. It has a simplified UI (and an advanced/unixy version availible via a gconf setting) and support for recursive permission changes. Could people please test this, and even better review the code if you're able to. Its important that things like this doesn't break in data-loss ways. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's an oversexed misogynist gentleman spy on his last day in the job. She's a scantily clad thirtysomething wrestler from the wrong side of the tracks. They fight crime! From alexl@redhat.com Fri Jun 16 10:45:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B94D3B000B for ; Fri, 16 Jun 2006 10:45:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32146-02 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id B3F8A3B0074 for ; Fri, 16 Jun 2006 10:45:32 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXFs007293; Fri, 16 Jun 2006 08:15:33 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFXJC005301; Fri, 16 Jun 2006 08:15:33 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GCFWR2025637; Fri, 16 Jun 2006 08:15:32 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <44929BCB.3000405@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 14:15:32 +0200 Message-Id: <1150460132.26621.91.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 14:45:34 -0000 On Fri, 2006-06-16 at 13:53 +0200, RUAUDEL Frédéric wrote: > Hi again, > > The new patch proposal is available in bugzilla : > > http://bugzilla.gnome.org/show_bug.cgi?id=339273 > > Indeed, the use of the NautilusSignaller API is much cleaner and require > less code :) Looks much better. However, I'd prefer if this part: + /* Update window's current selection popup menu */ + fm_directory_view_update_menus (FM_DIRECTORY_VIEW(window->content_view)); Was actually done by FMDirectoryView (by also listening to the signal). We don't really guarantee that window->content_view is a FMDirectoryView (although it always is right now). =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a one-legged vegetarian rock star with a passion for fast cars. She's a radical goth archaeologist with a knack for trouble. They fight crime! From alexl@redhat.com Fri Jun 16 11:41:23 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DA65B3B0080 for ; Fri, 16 Jun 2006 11:41:23 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01486-01 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 4FDAD3B0076 for ; Fri, 16 Jun 2006 11:41:21 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFenfc011852; Fri, 16 Jun 2006 11:40:49 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFei3o019963; Fri, 16 Jun 2006 11:40:44 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5GFegbZ008520; Fri, 16 Jun 2006 11:40:43 -0400 Subject: Re: Problem with popup menu cache system From: Alexander Larsson To: RUAUDEL =?ISO-8859-1?Q?Fr=E9d=E9ric?= In-Reply-To: <4492BCC9.3070701@embl.fr> References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> <44929BCB.3000405@embl.fr> <1150460132.26621.91.camel@greebo> <4492A396.6040708@embl.fr> <1150461357.26621.94.camel@greebo> <4492A6CE.1040904@embl.fr> <1150462104.1962.1.camel@greebo> <4492A9D0.1030804@embl.fr> <1150463304.1962.5.camel@greebo> <4492BCC9.3070701@embl.fr> Content-Type: text/plain; charset=ISO-8859-1 Date: Fri, 16 Jun 2006 17:40:37 +0200 Message-Id: <1150472437.1962.14.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.587 tagged_above=-999 required=2 tests=[AWL=0.014, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.587 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2006 15:41:24 -0000 On Fri, 2006-06-16 at 16:14 +0200, RUAUDEL Frédéric wrote: > New patch available in Bugzilla. The move was quite easy, just move the > two nautilus-signaller.[ch] files, change the Makefile.am and change the > #includes in the different files using it. > > I think now we are near the perfection ;oP Commited. Thanks! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suave day-dreaming master criminal possessed of the uncanny powers of an insect. She's a transdimensional belly-dancing bodyguard with a birthmark shaped like Liberty's torch. They fight crime! From jnoreiko@yahoo.com Sat Jun 17 03:33:56 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1350E3B028A for ; Sat, 17 Jun 2006 03:33:56 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 12115-05 for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: from web32408.mail.mud.yahoo.com (web32408.mail.mud.yahoo.com [68.142.207.201]) by menubar.gnome.org (Postfix) with SMTP id 4082B3B071C for ; Sat, 17 Jun 2006 03:33:53 -0400 (EDT) Received: (qmail 60442 invoked by uid 60001); 17 Jun 2006 07:21:00 -0000 Message-ID: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Received: from [172.188.218.75] by web32408.mail.mud.yahoo.com via HTTP; Sat, 17 Jun 2006 08:21:00 BST Date: Sat, 17 Jun 2006 08:21:00 +0100 (BST) From: Joachim Noreiko Subject: Re: New permissions page To: nautilus-list@gnome.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.909 tagged_above=-999 required=2 tests=[AWL=-1.446, BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, DNS_FROM_RFC_WHOIS=1.447] X-Spam-Score: -0.909 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 07:33:56 -0000 --- nautilus-list-request@gnome.org wrote: > 2. New permissions page (Alexander Larsson) > > I just commited a rework of the permissions page in > the file property > dialog. It has a simplified UI (and an > advanced/unixy version availible > via a gconf setting) and support for recursive > permission changes. Is this the result of the discussion the usability list had a few months ago? Could you send me a screenshot so I can update the user guide please? ___________________________________________________________ Yahoo! Messenger - with free PC-PC calling and photo sharing. http://uk.messenger.yahoo.com From ruaudel@embl.fr Sat Jun 17 22:34:43 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id DDE743B00B2 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20813-01 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id 5EF613B0087 for ; Sat, 17 Jun 2006 22:34:38 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5G92UM21496; Fri, 16 Jun 2006 11:02:30 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp021214; Fri Jun 16 11:02:03 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id 044C73A00A3; Fri, 16 Jun 2006 11:01:15 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid EC8163A008B; Fri, 16 Jun 2006 11:01:14 +0200 (CEST) Message-ID: <4492739C.3080608@embl.fr> Date: Fri, 16 Jun 2006 11:02:20 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson Content-Type: multipart/mixed; boundary=------------000207040807030500030609 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:52.55345 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:43 -0000 This is a multi-part message in MIME format. --------------000207040807030500030609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Thanks for the review, > + /* Signals */ > + void (*items_updated) (NautilusMenuProvider *provider, > + GtkWidget *window, > + gpointer *data); > This adds a member to an interface implemented by others, which is a > binary incompatible change. Fortunately its not needed, as the > implementations have no need for a default handler for the signal, they > are the ones that omit it anyway. Ok, I can remove it. I put it in the end of the structure to avoid having to recompile other extensions. But for my general knowledge, when can we change the binary compatibility ? in the CVS head or in any version before a feature freeze scheduled date ? > Also, i see no need to pass in the window. Keeping track of that should > not be needed by the extensions. This was to find back the view which have the current selected menu in nautilus but maybe I can find another way. Do you have any tips for that ? Is there a get_current_view() function anywhere ? Or maybe should I have to update all views ? > static void > +menu_provider_items_updated_handler (NautilusMenuProvider *provider, GtkWidget* parent_window, gpointer dat > a) > I don't like this at all. You're hardcoding lots of knowledge about the > implementation of windows and views in a general place. A better > approach would be to create a new signal "menu_extensions_changed" in > NautilusSignaller and have the windows and views listen to that signal > and re-read their extension menus when its emitted. Indeed it is not very clean. I didn't see this NautilusSignaler stuff. I will try to use this instead, thanks. Regards, Fred --------------000207040807030500030609 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------000207040807030500030609-- From ruaudel@embl.fr Sat Jun 17 22:34:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3A48B3B00DC for ; Sat, 17 Jun 2006 22:34:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20639-05 for ; Sat, 17 Jun 2006 22:34:42 -0400 (EDT) Received: from out.esrf.fr (firewall.embl-grenoble.fr [193.49.43.1]) by menubar.gnome.org (Postfix) with ESMTP id C6F0D3B0128 for ; Sat, 17 Jun 2006 22:34:41 -0400 (EDT) Received: (from uucp@localhost) by out.esrf.fr (1.0.0) id k5GBrm324709; Fri, 16 Jun 2006 13:53:48 +0200 (MEST) Received: from nitro16.embl-grenoble.fr(193.48.220.47) by firewall via smap (V1.3) id tmp024600; Fri Jun 16 13:53:28 2006 Subject: Re: Problem with popup menu cache system Received: from EMBL.FR.Protection.Gateway (localhost.localdomain [127.0.0.1]) by localhost.embl-grenoble.fr (Postfix) with ESMTP id C79C53A009C; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Received: from [127.0.0.1] (pc85.embl-grenoble.fr [193.48.220.185])by EMBL.FR.Protection.Gateway (Postfix) with ESMTPid B98E93A008B; Fri, 16 Jun 2006 13:52:40 +0200 (CEST) Message-ID: <44929BCB.3000405@embl.fr> Date: Fri, 16 Jun 2006 13:53:47 +0200 From: =?ISO-8859-1?Q?RUAUDEL_Fr=E9d=E9ric?= User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Larsson References: <4492739C.3080608@embl.fr> <1150451672.26621.77.camel@greebo> In-Reply-To: <1150451672.26621.77.camel@greebo> Content-Type: multipart/mixed; boundary=------------090306030603010903060903 X-imss-version: 2.040 X-imss-result: Passed X-imss-scores: Clean:99.90000 C:2 M:4 S:5 R:5 X-imss-settings: Baseline:4 C:3 M:4 S:4 R:4 (1.0000 1.0000) X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=-0.013, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, UNPARSEABLE_RELAY=0.001] X-Spam-Score: -2.476 X-Spam-Level: Cc: grumz@grumz.net, nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:34:44 -0000 This is a multi-part message in MIME format. --------------090306030603010903060903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi again, The new patch proposal is available in bugzilla : http://bugzilla.gnome.org/show_bug.cgi?id=339273 Indeed, the use of the NautilusSignaller API is much cleaner and require less code :) You can test the code with the following development tarball of nautilus-actions if you wish : ftp://ftp2.grumz.net/grumz/nautilus-actions.dev_rc2.tar.gz Best regards, Fred Alexander Larsson wrote: >On Fri, 2006-06-16 at 11:02 +0200, RUAUDEL Frédéric wrote: > > >>Thanks for the review, >> >> > + /* Signals */ >> > + void (*items_updated) (NautilusMenuProvider *provider, >> > + GtkWidget *window, >> > + gpointer *data); >> > This adds a member to an interface implemented by others, which is a >> > binary incompatible change. Fortunately its not needed, as the >> > implementations have no need for a default handler for the signal, they >> > are the ones that omit it anyway. >> >>Ok, I can remove it. I put it in the end of the structure to avoid >>having to recompile other extensions. But for my general knowledge, when >>can we change the binary compatibility ? in the CVS head or in any >>version before a feature freeze scheduled date ? >> >> > >Well, we don't really have a strict policy here. We'd like to do >backwards incompatible changes as seldom as we can, as that would >require us to bump the soname on libnautilus-extension and force all >extensions to be rebuilt. But if we feel some change is important we can >of course do this. > >Its debatable whether adding the signal to the end like that is >backwards compat or not. For an old extension they will be passing a >vtable that has an undefined pointer for items_updated. However, in >practice that signal is not likely to be emitted for the object, since >its normally emitted by the extension... > >Anyway, we just don't need it there. > > > >> > Also, i see no need to pass in the window. Keeping track of that should >> > not be needed by the extensions. >> >>This was to find back the view which have the current selected menu in >>nautilus but maybe I can find another way. Do you have any tips for that >>? Is there a get_current_view() function anywhere ? Or maybe should I >>have to update all views ? >> >> > >With the NautilusSignaller (or similar) approach you don't have this >problem, because a visible view will update itself when it gets the >signal it connected to. No need to "find" it. > >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Alexander Larsson Red Hat, Inc > alexl@redhat.com alla@lysator.liu.se >He's a leather-clad devious inventor from the 'hood. She's a mistrustful >tempestuous fairy princess prone to fits of savage, blood-crazed rage. They >fight crime! > > > > --------------090306030603010903060903 Content-Type: text/x-vcard; charset=utf-8; name="ruaudel.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ruaudel.vcf" begin:vcard fn:Frederic RUAUDEL n:RUAUDEL;Frederic org:EMBL Grenoble Outstation;Computer & Network Team email;internet:ruaudel@embl.fr title:System Administrator x-mozilla-html:FALSE version:2.1 end:vcard --------------090306030603010903060903-- From alexl@redhat.com Mon Jun 19 05:34:55 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0A03B3B00A5 for ; Mon, 19 Jun 2006 05:34:55 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-04 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 7FA463B00A4 for ; Mon, 19 Jun 2006 05:34:51 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XWjY003333; Mon, 19 Jun 2006 05:33:32 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XRpk001435; Mon, 19 Jun 2006 05:33:27 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9XQSo027998; Mon, 19 Jun 2006 05:33:27 -0400 Subject: Re: Showing ALL mounted volumes on the Desktop (AKA Showing the root "Filesystem" on the desktop) From: Alexander Larsson To: Rubin In-Reply-To: <1150448621.29988.7.camel@thinkpad> References: <1150448621.29988.7.camel@thinkpad> Content-Type: text/plain Date: Mon, 19 Jun 2006 11:33:26 +0200 Message-Id: <1150709607.1962.31.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:34:55 -0000 On Fri, 2006-06-16 at 11:03 +0200, Rubin wrote: > Hi Nautilus List, > > I'm not a member of the list (yet) but I have a question of which I have > been unable to find the answer to in the usual way. > > I have configured my Nautilus to show mounted filesystems on my desktop > and not show anything else. This looks and works great for me: > > http://www.grond.org/downloads/pictures/Photos/Screenshots/Arch% > 20Desktop%203.png > > What I would like for the sake of consistency however, is to also > display my "/" on the desktop, since this is also a mounted fs (no, > a .desktop does not cut it ;-). This behaviour would be a little like > Mac OS X (which shows the Macintosh HD root volume on the desktop). > > How can i do this? Is it possible? Please cc me (rubin@xs4all.nl)when > replying to this! Right now the only way to do it is to add a "connect to server" to "file:///". "/" is ignored on the desktop. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a hate-fuelled alcoholic matador moving from town to town, helping folk in trouble. She's a strong-willed African-American femme fatale with a flame-thrower. They fight crime! From mark.kegel@gmail.com Sat Jun 17 22:37:24 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B99513B00B2 for ; Sat, 17 Jun 2006 22:37:24 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20627-08 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.227]) by menubar.gnome.org (Postfix) with ESMTP id 981F23B0089 for ; Sat, 17 Jun 2006 22:37:23 -0400 (EDT) Received: by wr-out-0506.google.com with SMTP id 68so857489wra for ; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.152.12 with SMTP id z12mr4476063wrd; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Received: by 10.54.102.7 with HTTP; Sat, 17 Jun 2006 19:36:28 -0700 (PDT) Message-ID: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Date: Sat, 17 Jun 2006 20:36:28 -0600 From: "Mark Kegel" To: nautilus-list@gnome.org Subject: widget advice for nautilus view MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jun 2006 02:37:24 -0000 I'm attempting to add a new view to nautilus that mimics the column view style found on OS X, but I do have one question. Should I implement a new widget that handles the multiple columns which then gets used by the view, or should the nautilus view handle the multiple GtkTree widgets and pane widgets that would be needed? I can think of several reasons for each approach. Or if this is the wrong way altogether, which is correct/best? Thanks. Mark Kegel From alexl@redhat.com Mon Jun 19 05:32:52 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D5A93B0004 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02228-02 for ; Mon, 19 Jun 2006 05:32:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id DA9513B008F for ; Mon, 19 Jun 2006 05:32:50 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9VmqA002779; Mon, 19 Jun 2006 05:31:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9Vm0L001128; Mon, 19 Jun 2006 05:31:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5J9ViJV027920; Mon, 19 Jun 2006 05:31:45 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Joachim Noreiko In-Reply-To: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="=-HvacVzLTIJ84Cz/f7LbQ" Date: Mon, 19 Jun 2006 11:31:44 +0200 Message-Id: <1150709505.1962.28.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Mailman-Approved-At: Mon, 19 Jun 2006 07:58:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 09:32:52 -0000 --=-HvacVzLTIJ84Cz/f7LbQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2006-06-17 at 08:21 +0100, Joachim Noreiko wrote: > --- nautilus-list-request@gnome.org wrote: > > 2. New permissions page (Alexander Larsson) > > > > I just commited a rework of the permissions page in > > the file property > > dialog. It has a simplified UI (and an > > advanced/unixy version availible > > via a gconf setting) and support for recursive > > permission changes. > > Is this the result of the discussion the usability > list had a few months ago? I didn't follow that. Its rather a result of discussions on this list and various discussions in blog postings by Manny. > Could you send me a screenshot so I can update the > user guide please? I've attached some simple screenshots of the simple and the advanced mode, showing a single file selected and a single folder selected. Of course, I'm not sure things will look identical in the final version, since we might change details when we get some feedback. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a war-weary amnesiac shaman She's a foxy tomboy queen of the dead with a song in her heart and a spring in her step. They fight crime! --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions1.png Content-Type: image/png; name=permissions1.png Content-Transfer-Encoding: base64 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 2Fgez04AAAAASUVORK5CYII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions2.png Content-Type: image/png; name=permissions2.png Content-Transfer-Encoding: base64 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 HMeyDhw7fhLv9Rvxe/CQq9eus2//AbX7k7VOgNr1G2eKPTfMzdP2rs//dZEzZ88zY/Y8eVloaBj/ XPkXADs7W7S10454unftzOMnT1i+cjVJScnIZDIe+gfkKUEpax8gOjqGCxf/JjU1FWdnJ2rWqM7i JX+SmJTE6zdvWLlqLV27dMp0Cmrtuo0kJCby6vVrVq9dR7eunXI8RaWsH+5urtStU4sp02by9Fkg MTEx3Lp1G9MyaUeUly7n/a6tjH0qiPpWrfYmISGBV69fs2bteoX9zSindjPGpeiz1y1RggH9erNk 6XJiY2N5ERzMug2b+G7IwDzHL+RekSSCsLBwZsycS+++g/A5cIhvvm7P5vVrM02TkJBAr74DMw3P AgOVlivau1Jm6qTxGBsbsXP3Xn7+cbh8BQa4/M8VlixbwZxZ03Es68DSxQvQ0dHml1/HE/nqVY71 WVlZcur4IQYN7EdYWBjjJvzGsP/9zKYt2/Bwd5NP979h3zFh3K/cuHGL5i3b8Pffl5g4fgzDv/9W 7dinT52EmZkpP4/8lfDwl+jp6eGzbyft27bBe91Guvfqy9gJk+TXX9TpT9Y6Ie1o7XEeli2Ag70d A/r3oW//wcydv4Axv4yQl8XFxzN67ESc3CqyYOFili1ZiJaWFlZWluzfs4Ojvidw8aiMR8WqjBj1 KykpuU8EytqHD3f5JCUlAbB+7Uqio2Nwr1CFOvUaU61qFSZPHCefXk9PD4lEQo3aDaheqz6elSsx fuyHi6fpOxJSqVRlP7xXr8DWxoZ6DZtSvVYDDh4+Srlyjgz//lt69hlAnQZNct3frH0qiPpSUlOp Uach1WvVp4pn5Uz9VSSndjPGpeizBxj76y+U93CnSrU6fN6qLd9/N1jcOlrEtACZOvfiL1swjRHj 5xAXm/u9cEEoaOVcK2QbN/m38fTuWbB/xKdIcHAI1tZWbN66nekz53D/9rUCq7u4+vbv1Wu0bN2O wMd+8utUH0tsQu7ExsayfuUChv40XuW0ppb2RfMHZYJQ0J743yvW9r3Xb2SN93r09fWZm89bWrMq 7r4p8zHHJuSdSASCkAfjxvzCuDG/FHcYBapG9WrF/pf6QvEQl+UFQRA0nEgEgiAIGk4kAkEQBA0n EoEgCIKGE4lAEARBw4lEIAiCoOFEIhAEQdBwIhEIgiBoOJEIBEEQNJxIBAUo62MwPxX5eTSloJhM JuPO3XssX7k630/dE4TC9EklAlNLe+zLuRdK3ddv3OT0mXOFUrem+eXXcdSo05CyzuVxdq9E3wFD eBEcnGmapKRkRo0ei4t7ZSp4VufPFatyVQ5pv/dTu35jnN0rUcGzOtNnzsk2jSKFXT9AxSo1GDTk e8ZNmCx/jnS68PCX9OwzAGf3SpSvXI1Zc+Yr/S1/deJN99vkaVjYOKqMT1Wdppb2OQ7pP1eujKIY 7vs9oFHTlvKH9zRo1JwDBw+rrE8oXOK3ht5r3rIN1tZW3LmR999xF9KUK+fIru+G4FjWgbdvo/jh 51F069GXc6ePyaeZOn0m9+77cfPaJd6+jaJVmw7Y2tjIf35YVfmq1d6s9l7Ptk3rKFfOkbdvozI9 mU2Vwq4f4N9L57l334+WrdtlK+vZZwC1a9Vg/dqVPH8RTIeOXTA2NuK7IYPyFG+6EydPc/josRzr yG2df53N/LjQXXv2cfrMWZVPDlMWg7WVFRvWrcbB3g4tLS32+xxk4qSpfNWmtVoxC4XjkzoiUMbf P4B2X3fB2b0SVnblaNS0JRcufnh494WLl2jW8kus7Zywc3Tjiy/by8tMLdMeGxkSEoqppT33/R4o bGfrtp00ad4KG3tn7BzdaNCoebZpfA4conLVWji5VWTHrj1qx5h+amnTlm1U8Kyebf7k5GTGTZiM s3slXNwrM33mHNwreGU6rePvH0Cnrj2xLeuKs3slxo6flGlvNDk5mTHjf6OcawVcPTyZNWd+tvjz e6rouyGDcCyb9khGY2Mjenbvyt179+XPxU1ISGDdhs0MH/YdBgYG2NhY069PT5YtX6VWeXJyMvN+ X8TY0SMpV85R3k7FCuXViq+w609XsmTOj5R8/PgJV69d53/DhiKVSinrYM/wYd+xes26PMWbLjQ0 jN8mT2Pe7Jx/DfXfq9cwtbQnISFBrTrLe7jLB9MyZdi6bQfLl/4hf3JYxvrUjaF0aWPKOtijpaVF QkICzwKD+KZjB4XLUCga/5lEEBMbS+tWn+Ozdycb163B3z+A4T/8LC8fOGQo9+8/YPNGb44c3Jvp 2b2X/joNgLm5GZf+Oo2zs1OObaxZu55hP/xMfHw8K5cvYYP3Kjp983WmaSJfvWL+gj/o2KEdb99G MXHSVLVjBAgLC2PX7n2M/XUU0dExmeZfsGgJy1eupmaN6uzcvgmZDCIiI+Xl0dExtOvYhavXrrNp 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 YII= --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions3.png Content-Type: image/png; name=permissions3.png Content-Transfer-Encoding: base64 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 iZ+aPf3U5P2hEBwSSkvT4O80Xkycd0Axm80/2qmkSqn6P7tuajSZcXF2wmjQnzuxDMD2+XeF0HYy BuOnZk8/NXl/KFyKdrmgTXkZPz6sDKqw/UuenVwQrFZb2y281JLIkPGzgRxQfiaQV7suDFY5AMuQ MeKQA8rPAf2fGZVx3pD3m2TIGHnIAeVnACvIU5QLhdxeMmSMOOSXFs4DOafzmBKVRG9v3/f6/YeA Vb4u7Po/FlB+DDoq4+eP/zqgZJ7IZkpUElOikoiISWHVZdewZ9+h7/28kVT8I8eO22UTXz/LEyFW q+Q6dOgw3r4BePsG4B8wmti4RD766JNB6UbyOnH8BN6+AWh7en7QvN/nOlc42X/wKFde+2ui4uYz O3kxN992F4XFpT9IV4qxdPUVvPPBJ/b7xqZmpkQl8cHHn9m51jYN0fELOJZ50m47Wm0ve/YdwmIZ uS8nlFdWMSUqiVdef1vCl5SWEzFr7nk942LIdTYMtP+IWXNJWbyau+75K+UVVRe9/IuNH7Itzxcj NkM5fmgHh3ZtYdKEcdz55wcwGAzf6zlTJk/kg7dewdVt5F6gPHFoJ2V5mfZLpfpxHn/+3rBaGeo/ gMryYirLi0iIj+eO399Jn043ZNqh/jOajOed1oqViOnT2PbNV7i6uV5Qvv827/f5b7glr63ffsdt d97DxvWryTy4g33bvyBy+jQ2XXfzDx5UUucmcfhIpv0+43gWAMdP5ti5fQePkJgwh+iZkXbbKS2r 4JY7/oTRaBr0zP8Wz7/8BiWl5d8r78WU62w4cWgnpWcyyD62h5eeeZSu7m42/OIGTp/J/8FkuBi4 FG15LoxYQFGgIDg4kPVrVmIwGOz2+uWWb1mx/iriUpaSNH8Fmz//2p7nxX//h5RFq5mdvJj1m64H oKy8kmtvvBW9Tnivor6hkd/c/kdikhYRk7SIvz782IjI2z8T2r33IGsvv464lKW8/tb7HDqSwerL rmHO3KW8+8FmSZ7s02dYueFqImPnce2Nt9LYNPTLVIeOZLB83S+YnbyY63/9O9o07d+rzKHaZyhY +/838LLxvj6+rFiejl5voFerZc/ufSQkphIWPol16y+npbkVrHDixEl8/IL48sstzJ6TyN1332fn tm3bTuq8hYybMJXnnnuRPbv3MTdlPuHjp/Dqq2+AFYqKilm9ZgO6Ph1Y4bHHn2JaRBRh4ZNIW7DE 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 tvrxfy1q6mPXqvNYAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ Content-Disposition: attachment; filename=permissions4.png Content-Type: image/png; name=permissions4.png Content-Transfer-Encoding: base64 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 yQv/D3ppEXAe/kOyAAAAAElFTkSuQmCC --=-HvacVzLTIJ84Cz/f7LbQ-- From alexl@redhat.com Mon Jun 19 08:41:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 006D43B09D7 for ; Mon, 19 Jun 2006 08:41:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11497-07 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 2F9AA3B0D96 for ; Mon, 19 Jun 2006 08:40:55 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSaF8026601; Mon, 19 Jun 2006 08:28:36 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSZeG001636; Mon, 19 Jun 2006 08:28:36 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JCSYlg007366; Mon, 19 Jun 2006 08:28:35 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150466460.16424.7.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 14:28:35 +0200 Message-Id: <1150720115.16397.6.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 12:41:01 -0000 On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > The attached patch is a new attempt to implement session management, > this time the calls are proxied through NautilusShell (thus operating on > the server), session names are generated on the fly and a > "--load-session" parameter was added. Also, the session file is not > removed when it is not readable or no regular file, so that one can > manually load a particular session on startup. I had a quick check over it and it generally looks good. Some things i noticed: @@ -109,7 +109,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.34.2]) dnl ========================================================================== We need the newer version for the new gettext stuff. @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp } else if (!no_default_window) { Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); We shouldn't open a default window in this case. Did you handle that? + g_message ("is %s\n", filename); Debug spew @@ -13,6 +13,7 @@ module Nautilus { interface Shell : ::Bonobo::Unknown { void open_windows (in URIList uris, in string startup_id, in string geometry, in boolean browser_window); void open_default_window (in string startup_id, in string geometry, in boolean browser_window); + void load_session (in string filename); Add new methods to the end of the interface, that minimizes bizzare backwards compat issues. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a scarfaced zombie boxer with a winning smile and a way with the ladies. She's a disco-crazy French-Canadian opera singer trying to make a difference in a man's world. They fight crime! From alexl@redhat.com Mon Jun 19 10:47:50 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 5D3523B00D8 for ; Mon, 19 Jun 2006 10:47:50 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15911-05 for ; Mon, 19 Jun 2006 10:47:47 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id E9A213B0017 for ; Mon, 19 Jun 2006 10:47:46 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDndPq023522; Mon, 19 Jun 2006 09:49:39 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDnd7B020926; Mon, 19 Jun 2006 09:49:39 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JDncHK013361; Mon, 19 Jun 2006 09:49:38 -0400 Subject: Re: widget advice for nautilus view From: Alexander Larsson To: Mark Kegel In-Reply-To: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> References: <8a5993840606171936q5395b6co342e9be89e38d837@mail.gmail.com> Content-Type: text/plain Date: Mon, 19 Jun 2006 15:49:38 +0200 Message-Id: <1150724978.16397.9.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 14:47:50 -0000 On Sat, 2006-06-17 at 20:36 -0600, Mark Kegel wrote: > I'm attempting to add a new view to nautilus that mimics the column > view style found on OS X, but I do have one question. Should I > implement a new widget that handles the multiple columns which then > gets used by the view, or should the nautilus view handle the multiple > GtkTree widgets and pane widgets that would be needed? I can think of > several reasons for each approach. > > Or if this is the wrong way altogether, which is correct/best? I can't really say offhand what way would be best. I think the best way to pick would be to do some experimenting with the two approaches in a little test application and see how they work out. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal dishevelled stage actor trapped in a world he never made. She's an enchanted paranoid femme fatale from out of town. They fight crime! From chris@gnome-de.org Mon Jun 19 11:24:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 3C37C3B0734 for ; Mon, 19 Jun 2006 11:24:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17721-01 for ; Mon, 19 Jun 2006 11:24:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 6A67C3B0832 for ; Mon, 19 Jun 2006 11:23:59 -0400 (EDT) Received: (qmail 2563 invoked by uid 85); 19 Jun 2006 15:23:03 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.155.81):. Processed in 0.207799 secs); 19 Jun 2006 15:23:03 -0000 Received: from p54969b51.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.155.81) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 19 Jun 2006 15:23:03 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150720115.16397.6.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:22:57 +0200 Message-Id: <1150730577.5245.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:24:07 -0000 Am Montag, den 19.06.2006, 14:28 +0200 schrieb Alexander Larsson: > On Fri, 2006-06-16 at 16:01 +0200, Christian Neumair wrote: > > The attached patch is a new attempt to implement session management, > > this time the calls are proxied through NautilusShell (thus operating on > > the server), session names are generated on the fly and a > > "--load-session" parameter was added. Also, the session file is not > > removed when it is not readable or no regular file, so that one can > > manually load a particular session on startup. > > I had a quick check over it and it generally looks good. > (...) > @@ -617,6 +623,10 @@ nautilus_application_startup (NautilusAp > } else if (!no_default_window) { > Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); > } > + > + if (session_to_load != NULL) { > + Nautilus_Shell_load_session (shell, session_to_load, &ev); > + } > > /* Add ourselves to the session */ > init_session (); > > > We shouldn't open a default window in this case. Did you handle that? The session restart command includes "--no-default-window" (nautilus-application.c:save_session). > (...) -- Christian Neumair From alexl@redhat.com Mon Jun 19 11:55:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11E2B3B0924 for ; Mon, 19 Jun 2006 11:55:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18742-04 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 9EBE23B03A9 for ; Mon, 19 Jun 2006 11:55:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsBQf010743; Mon, 19 Jun 2006 11:54:11 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFsAf3026315; Mon, 19 Jun 2006 11:54:10 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5JFs9M3009507; Mon, 19 Jun 2006 11:54:10 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150730577.5245.4.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> Content-Type: text/plain Date: Mon, 19 Jun 2006 17:54:09 +0200 Message-Id: <1150732450.16397.12.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jun 2006 15:55:11 -0000 On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > We shouldn't open a default window in this case. Did you handle that? > > The session restart command includes > "--no-default-window" (nautilus-application.c:save_session). I guess that is good enough, although we could also always do that when specifying a session. Its unlikely that people would use the session switch manually though, so it doesn't really matter. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a leather-clad devious dwarf with no name. She's a supernatural psychic wrestler with a flame-thrower. They fight crime! From alexl@redhat.com Tue Jun 20 04:09:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8B05B3B027F for ; Tue, 20 Jun 2006 04:09:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01941-05 for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 251463B027D for ; Tue, 20 Jun 2006 04:09:52 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K8916A009982; Tue, 20 Jun 2006 04:09:01 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K891t6001277; Tue, 20 Jun 2006 04:09:01 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5K890Lx026400; Tue, 20 Jun 2006 04:09:00 -0400 Subject: Re: Overlapping icons, again From: Alexander Larsson To: Federico Mena Quintero In-Reply-To: <1150213894.17566.105.camel@cacharro.xalalinux.org> References: <1149109286.3625.89.camel@cacharro.xalalinux.org> <1150106182.3023.107.camel@greebo> <1150213894.17566.105.camel@cacharro.xalalinux.org> Content-Type: text/plain Date: Tue, 20 Jun 2006 10:09:00 +0200 Message-Id: <1150790940.16397.21.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 08:09:53 -0000 On Tue, 2006-06-13 at 10:51 -0500, Federico Mena Quintero wrote: > On Mon, 2006-06-12 at 11:56 +0200, Alexander Larsson wrote: > > > I thought this bug was fixed already? > > Manny, whats your opinion on this? > > I believe Manny's patches were about fine-tuning the placement grid and > positioning in general. > > My patch is about maintaining the right metadata for icons by emitting > the signal as appropriate, and about really maintaining the position of > icons which were lazily placed. I was just wondering, because we had the bug reported in fedora (icon positions changing at login), and it was fixed in a later nautilus update. That was fixed by manny i think, thus I wanted his feedback. I must say that i don't quite understand how the lazy positioned icons changes solves the issue, but if you're certain this is the right fix, then go ahead and commit it to HEAD. If it causes problems we'll find out fast enought. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a shy skateboarding jungle king from the 'hood. She's a green-fingered extravagent museum curator from a family of eight older brothers. They fight crime! From olaf@cbk.poznan.pl Tue Jun 20 09:13:44 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CA3763B044D for ; Tue, 20 Jun 2006 09:13:44 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17248-03 for ; Tue, 20 Jun 2006 09:13:42 -0400 (EDT) Received: from goliath.sylaba.poznan.pl (goliath.sylaba.poznan.pl [193.151.36.3]) by menubar.gnome.org (Postfix) with ESMTP id 25DD03B02A4 for ; Tue, 20 Jun 2006 09:13:41 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 97AC818D1E4; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from goliath.sylaba.poznan.pl ([127.0.0.1]) by localhost (goliath.sylaba.poznan.pl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 89603-01-62; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (ip-83-238-212-180.netia.com.pl [83.238.212.180]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by goliath.sylaba.poznan.pl (Postfix) with ESMTP id 2C66318D1D2; Tue, 20 Jun 2006 15:12:10 +0200 (CEST) Received: from venus.local.navi.pl (venus.local.navi.pl [192.168.1.10]) by venus.local.navi.pl (8.13.1/8.13.1) with ESMTP id k5KDBxws022710; Tue, 20 Jun 2006 15:12:09 +0200 Subject: Re: New permissions page From: Olaf =?iso-8859-2?Q?Fr=B1czyk?= To: Alexander Larsson In-Reply-To: <1150709505.1962.28.camel@greebo> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:11:58 +0200 Message-Id: <1150809118.17794.51.camel@venus.local.navi.pl> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at sylaba.poznan.pl X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.783 tagged_above=-999 required=2 tests=[AWL=-0.537, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_FAIL=1.142, TW_RW=0.077] X-Spam-Score: -1.783 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 13:13:45 -0000 On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > I've attached some simple screenshots of the simple and the advanced > mode, showing a single file selected and a single folder selected. > > Of course, I'm not sure things will look identical in the final version, > since we might change details when we get some feedback. Hi, Some thoughts: 1. permissions1.png: What is the "Execute" supposed to do? Does it set/remove "x" for user, or "user,group,other"? The "group" - shouldn't there be a button to open a window with a scrolled list to be able to choose a group? It would be much better in case of having a lot of groups. 2. permission2.png vs permission4.png In the first you see: "create and delete files", "Access files". In the latter ordinary "read,write,execute". Isn't it confusing? Additionally, what for to show File Access for directories with empty "---" fields? Why not to get rid of them? 3. I think that this is simply unnecessary. The right thing would be to have the same user interface for regular rights and for ACLs (what I hope will be supported soon). BTW. Changing description of rwx bits in case if it is file or folder will give problems with default ACLs, as they have different meaning if you create new directory or new file anyway :) 4. The solution could be two lists (TreeView) with 5 columns. First list for ACLs. Second for default ACLs in case it is directory. 1 Column - picture describing if it is a user or group (one head or two :). 2 Column - group/user name 3 Column - checkbox for "r" 4 Column - checkbox for "w" 5 Column - checkbox for "x" Additionally 2 buttons for each list (with disabled state if no ACLs) "Add" and "Remove" to add and remove ACL entries. Clicking on the button gives window with lists of users and groups to choose from. Below all of this three checkboxes for sticky,suid,sgid. Unfortunately, I have no time to make a mockup in glade, but I suppose that you can imagine what I mean :) Regards, Olaf -- Olaf FrÄ…czyk From alexl@redhat.com Tue Jun 20 10:12:11 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2BAB13B02A4 for ; Tue, 20 Jun 2006 10:12:11 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19006-06 for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 478C83B03CF for ; Tue, 20 Jun 2006 10:12:09 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdm3v023018; Tue, 20 Jun 2006 09:39:48 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdmHs006573; Tue, 20 Jun 2006 09:39:48 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5KDdk56015503; Tue, 20 Jun 2006 09:39:47 -0400 Subject: Re: New permissions page From: Alexander Larsson To: Olaf =?UTF-8?Q?Fr=C4=85czyk?= In-Reply-To: <1150809118.17794.51.camel@venus.local.navi.pl> References: <20060617072100.60440.qmail@web32408.mail.mud.yahoo.com> <1150709505.1962.28.camel@greebo> <1150809118.17794.51.camel@venus.local.navi.pl> Content-Type: text/plain; charset=UTF-8 Date: Tue, 20 Jun 2006 15:39:46 +0200 Message-Id: <1150810787.16397.40.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.55 tagged_above=-999 required=2 tests=[AWL=-0.026, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TW_RW=0.077] X-Spam-Score: -2.55 X-Spam-Level: Cc: Joachim Noreiko , nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 14:12:11 -0000 On Tue, 2006-06-20 at 15:11 +0200, Olaf FrÄ…czyk wrote: > On Mon, 2006-06-19 at 11:31 +0200, Alexander Larsson wrote: > > I've attached some simple screenshots of the simple and the advanced > > mode, showing a single file selected and a single folder selected. > > > > Of course, I'm not sure things will look identical in the final version, > > since we might change details when we get some feedback. > Hi, > > Some thoughts: > 1. > permissions1.png: > > What is the "Execute" supposed to do? > Does it set/remove "x" for user, or "user,group,other"? It sets it for all. > The "group" - shouldn't there be a button to open a window with a > scrolled list to be able to choose a group? It would be much better in > case of having a lot of groups. Its possible we should have this if we detect that there are a lot of groups, but I don't think its right in the normal case of few availible groups. > 2. > > permission2.png vs permission4.png > > In the first you see: "create and delete files", "Access files". > In the latter ordinary "read,write,execute". Isn't it confusing? Well, you generally either use simple or advanced mode, and advanced mode is targeted towards people who know unix permissions. I think such people would prefer to get the "exact" permission bits as they are traditionally shown. > Additionally, what for to show File Access for directories with empty > "---" fields? Why not to get rid of them? --- means "keep as is", and is the same as the inconsistant checkbox in the advanced mode. Its very useful for the apply recursively case. "---" might not be the ideal string though, but i couldn't think of a good one that works well. > 3. I think that this is simply unnecessary. The right thing would be to > have the same user interface for regular rights and for ACLs (what I > hope will be supported soon). I think any ACL interface will be vastly more complicated than the current simple ui, and useful only for a small part of the userbase. > BTW. Changing description of rwx bits in case if it is file or folder > will give problems with default ACLs, as they have different meaning if > you create new directory or new file anyway :) > > 4. The solution could be two lists (TreeView) with 5 columns. > First list for ACLs. > Second for default ACLs in case it is directory. > > 1 Column - picture describing if it is a user or group (one head or > two :). > 2 Column - group/user name > 3 Column - checkbox for "r" > 4 Column - checkbox for "w" > 5 Column - checkbox for "x" > > Additionally 2 buttons for each list (with disabled state if no ACLs) > "Add" and "Remove" to add and remove ACL entries. Clicking on the button > gives window with lists of users and groups to choose from. > > Below all of this three checkboxes for sticky,suid,sgid. > > Unfortunately, I have no time to make a mockup in glade, but I suppose > that you can imagine what I mean :) Surely you're not proposing this ui for the "simple" case? It might work for an advanced mode though. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a time-tossed neurotic shaman haunted by an iconic dead American confidante She's a radical renegade nun with a knack for trouble. They fight crime! From chris@gnome-de.org Tue Jun 20 13:59:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0F8003B00DD for ; Tue, 20 Jun 2006 13:59:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02118-05 for ; Tue, 20 Jun 2006 13:59:18 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 1655F3B000C for ; Tue, 20 Jun 2006 13:59:17 -0400 (EDT) Received: (qmail 68748 invoked by uid 85); 20 Jun 2006 17:58:56 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.204.200):. Processed in 2.796389 secs); 20 Jun 2006 17:58:56 -0000 Received: from p5496ccc8.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.204.200) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 20 Jun 2006 17:58:53 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150732450.16397.12.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> Content-Type: multipart/mixed; boundary="=-bgJ4fvimCkwAPOVjBPdI" Date: Tue, 20 Jun 2006 19:58:49 +0200 Message-Id: <1150826329.5240.5.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.471 tagged_above=-999 required=2 tests=[AWL=-0.103, BAYES_00=-2.599, TW_GD=0.077, TW_GT=0.077, TW_RG=0.077] X-Spam-Score: -2.471 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 17:59:20 -0000 --=-bgJ4fvimCkwAPOVjBPdI Content-Type: text/plain Content-Transfer-Encoding: 7bit Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > We shouldn't open a default window in this case. Did you handle that? > > > > The session restart command includes > > "--no-default-window" (nautilus-application.c:save_session). > > I guess that is good enough, although we could also always do that when > specifying a session. Its unlikely that people would use the session > switch manually though, so it doesn't really matter. New patch attached, which takes into account your other worthy suggestions and makes --load-session imply presence of --no-default-window. -- Christian Neumair --=-bgJ4fvimCkwAPOVjBPdI Content-Disposition: attachment; filename=nautilus-sm3.diff Content-Type: text/x-patch; name=nautilus-sm3.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-global-preferences.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.c,v retrieving revision 1.227 diff -u -p -r1.227 nautilus-global-preferences.c --- libnautilus-private/nautilus-global-preferences.c 16 Jun 2006 14:19:55 -0000 1.227 +++ libnautilus-private/nautilus-global-preferences.c 20 Jun 2006 17:52:00 -0000 @@ -384,6 +384,10 @@ static const PreferenceDefault preferenc PREFERENCE_STRING, "" }, + { NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) Index: libnautilus-private/nautilus-global-preferences.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v retrieving revision 1.133 diff -u -p -r1.133 nautilus-global-preferences.h --- libnautilus-private/nautilus-global-preferences.h 16 Jun 2006 14:19:55 -0000 1.133 +++ libnautilus-private/nautilus-global-preferences.h 20 Jun 2006 17:52:01 -0000 @@ -88,6 +88,7 @@ typedef enum #define NAUTILUS_PREFERENCES_START_WITH_TOOLBAR "preferences/start_with_toolbar" #define NAUTILUS_PREFERENCES_SIDE_PANE_VIEW "preferences/side_pane_view" #define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY "preferences/navigation_window_saved_geometry" +#define NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED "preferences/navigation_window_saved_maximized" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "preferences/sort_directories_first" Index: libnautilus-private/nautilus-metadata.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-metadata.h,v retrieving revision 1.30 diff -u -p -r1.30 nautilus-metadata.h --- libnautilus-private/nautilus-metadata.h 11 Oct 2004 08:10:42 -0000 1.30 +++ libnautilus-private/nautilus-metadata.h 20 Jun 2006 17:52:06 -0000 @@ -55,6 +55,7 @@ #define NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY "window_geometry" #define NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION "window_scroll_position" #define NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES "window_show_hidden_files" +#define NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED "window_maximized" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color" #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image" Index: src/nautilus-application.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v retrieving revision 1.241 diff -u -p -r1.241 nautilus-application.c --- src/nautilus-application.c 22 Mar 2006 09:04:21 -0000 1.241 +++ src/nautilus-application.c 20 Jun 2006 17:52:18 -0000 @@ -52,8 +52,11 @@ #include "nautilus-shell.h" #include "nautilus-window-bookmarks.h" #include "nautilus-window-private.h" +#include "nautilus-window-manage-views.h" +#include #include #include +#include #include #include #include @@ -117,6 +120,8 @@ static void update_session static void init_session (void); static gboolean is_kdesktop_present (void); +static char *save_session_to_file (void); + BONOBO_CLASS_BOILERPLATE (NautilusApplication, nautilus_application, BonoboGenericFactory, BONOBO_TYPE_GENERIC_FACTORY) @@ -448,6 +453,7 @@ nautilus_application_startup (NautilusAp gboolean browser_window, const char *startup_id, const char *geometry, + const char *session_to_load, const char *urls[]) { CORBA_Environment ev; @@ -615,8 +621,13 @@ nautilus_application_startup (NautilusAp Nautilus_Shell_open_windows (shell, url_list, corba_startup_id, corba_geometry, browser_window, &ev); CORBA_free (url_list); } else if (!no_default_window) { + g_assert (session_to_load == NULL); Nautilus_Shell_open_default_window (shell, corba_startup_id, corba_geometry, browser_window, &ev); } + + if (session_to_load != NULL) { + Nautilus_Shell_load_session (shell, session_to_load, &ev); + } /* Add ourselves to the session */ init_session (); @@ -1129,12 +1140,30 @@ nautilus_application_present_spatial_win return window; } +static gboolean +another_navigation_window_already_showing (NautilusWindow *the_window) +{ + GList *list, *item; + + list = nautilus_application_get_window_list (); + for (item = list; item != NULL; item = item->next) { + if (item->data != the_window && + NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { + return TRUE; + } + } + + return FALSE; +} + NautilusWindow * nautilus_application_create_navigation_window (NautilusApplication *application, const char *startup_id, GdkScreen *screen) { NautilusWindow *window; + char *geometry_string; + gboolean maximized; g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); @@ -1144,6 +1173,31 @@ nautilus_application_create_navigation_w startup_id); #endif + maximized = eel_preferences_get_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + geometry_string = eel_preferences_get + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); + if (geometry_string != NULL && + geometry_string[0] != 0) { + /* Ignore saved window position if a window with the same + * location is already showing. That way the two windows + * wont appear at the exact same location on the screen. + */ + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry_string, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + another_navigation_window_already_showing (window)); + } + g_free (geometry_string); + return window; } @@ -1273,41 +1327,263 @@ removed_from_session (GnomeClient *clien nautilus_main_event_loop_quit (); } -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, gpointer data) +static char * +save_session_to_file (void) { - NautilusWindow *window; + xmlDocPtr doc; + xmlNodePtr root_node, history_node; GList *l; - static char *clone_argv[] = { "nautilus", "--no-default-window" }; - char **restart_argv; - int argc; - int i; - int num_windows; - - num_windows = g_list_length (nautilus_application_window_list); - if (num_windows > 0) { - argc = 1 + num_windows; - i = 0; - restart_argv = g_new (char *, argc); - restart_argv[i++] = g_strdup ("nautilus"); - for (l = nautilus_application_window_list; l != NULL; l = l->next) { - window = NAUTILUS_WINDOW (l->data); - restart_argv[i++] = nautilus_window_get_location (window); + char *dir, *filename; + unsigned n_processed; + + doc = xmlNewDoc ("1.0"); + + root_node = xmlNewNode (NULL, "session"); + xmlDocSetRootElement (doc, root_node); + + history_node = xmlNewChild (root_node, NULL, "history", NULL); + + n_processed = 0; + for (l = nautilus_get_history_list (); l != NULL; l = l->next) { + NautilusBookmark *bookmark; + xmlNodePtr bookmark_node; + char *tmp; + + bookmark = l->data; + + bookmark_node = xmlNewChild (history_node, NULL, "bookmark", NULL); + + tmp = nautilus_bookmark_get_name (bookmark); + xmlNewProp (bookmark_node, "name", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_icon (bookmark); + xmlNewProp (bookmark_node, "icon", tmp); + g_free (tmp); + + tmp = nautilus_bookmark_get_uri (bookmark); + xmlNewProp (bookmark_node, "uri", tmp); + g_free (tmp); + + if (nautilus_bookmark_get_has_custom_name (bookmark)) { + xmlNewProp (bookmark_node, "has_custom_name", "TRUE"); } - - gnome_client_set_restart_command (client, argc, restart_argv); - for (i = 0; i < argc; i++) { - g_free (restart_argv[i]); + if (++n_processed > 50) { /* prevent history list from growing arbitrarily large. */ + break; } - g_free (restart_argv); + } + + for (l = nautilus_application_window_list; l != NULL; l = l->next) { + xmlNodePtr win_node; + NautilusWindow *window; + char *tmp; + + window = l->data; + + win_node = xmlNewChild (root_node, NULL, "window", NULL); + + xmlNewProp (win_node, "type", NAUTILUS_IS_NAVIGATION_WINDOW (window) ? "navigation" : "spatial"); + + if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { /* spatial windows store their state as file metadata */ + tmp = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); + xmlNewProp (win_node, "geometry", tmp); + g_free (tmp); + + if (GTK_WIDGET (window)->window && + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED) { + xmlNewProp (win_node, "maximized", "TRUE"); + } + } + + tmp = nautilus_window_get_location (window); + xmlNewProp (win_node, "location", tmp); + g_free (tmp); + } + + dir = nautilus_get_user_directory (); + filename = tempnam (dir, "saved-session-"); + g_free (dir); + + xmlIndentTreeOutput = 1; + if (filename == NULL || xmlSaveFormatFile (filename, doc, 1) < 0) { + g_message ("failed to save session to %s", filename); + g_free (filename); + filename = NULL; + } + + xmlFreeDoc (doc); + + return filename; +} + +void +nautilus_application_load_session (NautilusApplication *application, + const char *filename) +{ + xmlDocPtr doc; + gboolean bail; + + g_assert (filename != NULL); + + bail = TRUE; + + if (g_file_test (filename, G_FILE_TEST_EXISTS)) { + xmlNodePtr root_node; + + doc = xmlReadFile (filename, NULL, 0); + if (doc != NULL && (root_node = xmlDocGetRootElement (doc)) != NULL) { + xmlNodePtr node; + + bail = FALSE; + + for (node = root_node->children; node != NULL; node = node->next) { + + if (!strcmp (node->name, "text")) { + continue; + } else if (!strcmp (node->name, "history")) { + xmlNodePtr bookmark_node; + gboolean emit_change; + + emit_change = FALSE; + + for (bookmark_node = node->children; bookmark_node != NULL; bookmark_node = bookmark_node->next) { + if (!strcmp (bookmark_node->name, "text")) { + continue; + } else if (!strcmp (bookmark_node->name, "bookmark")) { + xmlChar *name, *icon, *uri; + gboolean has_custom_name; + + uri = xmlGetProp (bookmark_node, "uri"); + name = xmlGetProp (bookmark_node, "name"); + has_custom_name = xmlHasProp (bookmark_node, "has_custom_name") ? TRUE : FALSE; + icon = xmlGetProp (bookmark_node, "icon"); + + emit_change |= nautilus_add_to_history_list_no_notify (uri, name, has_custom_name, icon); + + xmlFree (name); + xmlFree (uri); + xmlFree (icon); + } else { + g_message ("unexpected bookmark node %s while parsing %s", bookmark_node->name, filename); + bail = TRUE; + continue; + } + } + + if (emit_change) { + nautilus_send_history_list_changed (); + } + } else if (!strcmp (node->name, "window")) { + NautilusWindow *window; + xmlChar *type, *location; + + type = xmlGetProp (node, "type"); + if (type == NULL) { + g_message ("empty type node while parsing %s", filename); + bail = TRUE; + continue; + } + + location = xmlGetProp (node, "location"); + if (location == NULL) { + g_message ("empty location node while parsing %s", filename); + bail = TRUE; + xmlFree (type); + continue; + } + + if (!strcmp (type, "navigation")) { + xmlChar *geometry; + + window = nautilus_application_create_navigation_window (application, NULL, gdk_screen_get_default ()); + + geometry = xmlGetProp (node, "geometry"); + if (geometry != NULL) { + eel_gtk_window_set_initial_geometry_from_string + (GTK_WINDOW (window), + geometry, + NAUTILUS_WINDOW_MIN_WIDTH, + NAUTILUS_WINDOW_MIN_HEIGHT, + FALSE); + } + xmlFree (geometry); + + if (xmlHasProp (node, "maximized")) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + + nautilus_window_open_location (window, location, FALSE); + } else if (!strcmp (type, "spatial")) { + window = nautilus_application_present_spatial_window (application, NULL, NULL, location, gdk_screen_get_default ()); + } else { + g_message ("unknown window type \"%s\" while parsing %s", type, filename); + bail = TRUE; + } + + xmlFree (type); + xmlFree (location); + } else { + g_message ("unexpected node %s while parsing %s", node->name, filename); + bail = TRUE; + continue; + } + } + } + + if (doc != NULL) { + xmlFreeDoc (doc); + } + } + + if (bail) { + g_message ("failed to load session from %s", filename); } else { - gnome_client_set_restart_command (client, - G_N_ELEMENTS (clone_argv), - clone_argv); + char *uri; + GnomeVFSFileInfo *info; + /* only remove file if it is regular, user-owned and the user has write access. */ + + uri = gnome_vfs_get_uri_from_local_path (filename); + info = gnome_vfs_file_info_new (); + if (uri != NULL && + gnome_vfs_get_file_info (uri, info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) && + (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS) && + info->type == GNOME_VFS_FILE_TYPE_REGULAR && + (info->permissions & (GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_USER_WRITE)) && + info->uid == geteuid ()) { + g_remove (filename); + } + gnome_vfs_file_info_unref (info); + g_free (uri); } - +} + +static gint +save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, + GnomeInteractStyle interact_style, gint fast, gpointer data) +{ + char *argv[3] = { NULL }; + + argv[0] = "nautilus"; + + argv[2] = save_session_to_file (); + if (argv[2] != NULL) { + argv[1] = "--load-session"; + } + + gnome_client_set_restart_command (client, + G_N_ELEMENTS (argv), + argv); + + if (argv[2] != NULL) { + g_free (argv[2]); + } + return TRUE; } Index: src/nautilus-application.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-application.h,v retrieving revision 1.40 diff -u -p -r1.40 nautilus-application.h --- src/nautilus-application.h 26 Feb 2006 11:03:25 -0000 1.40 +++ src/nautilus-application.h 20 Jun 2006 17:52:18 -0000 @@ -69,6 +69,7 @@ void nautilus_applicatio gboolean browser_window, const char *startup_id, const char *default_geometry, + const char *session_to_load, const char *urls[]); GList * nautilus_application_get_window_list (void); GList * nautilus_application_get_spatial_window_list (void); @@ -95,5 +96,6 @@ void nautilus_applicatio void nautilus_application_close_all_spatial_windows (void); void nautilus_application_open_desktop (NautilusApplication *application); void nautilus_application_close_desktop (void); - +void nautilus_application_load_session (NautilusApplication *application, + const char *filename); #endif /* NAUTILUS_APPLICATION_H */ Index: src/nautilus-main.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v retrieving revision 1.156 diff -u -p -r1.156 nautilus-main.c --- src/nautilus-main.c 26 Apr 2006 12:24:43 -0000 1.156 +++ src/nautilus-main.c 20 Jun 2006 17:52:20 -0000 @@ -190,6 +190,7 @@ main (int argc, char *argv[]) gboolean no_desktop; const char *startup_id; char *startup_id_copy; + char *session_to_load; gchar *geometry; const gchar **remaining; gboolean perform_self_check; @@ -216,6 +217,9 @@ main (int argc, char *argv[]) { "restart", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &restart_shell, N_("Restart Nautilus."), NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining, NULL, N_("[URI...]") }, + { "load-session", 'l', 0, G_OPTION_ARG_STRING, &session_to_load, + /* Translators: --no-default-window is a nautilus command line parameter, don't modify it. */ + N_("Load a saved session from the specified file. Implies \"--no-default-window\"."), N_("FILENAME") }, { NULL } }; @@ -243,6 +247,7 @@ main (int argc, char *argv[]) /* Get parameters. */ remaining = NULL; geometry = NULL; + session_to_load = NULL; kill_shell = FALSE; no_default_window = FALSE; no_desktop = FALSE; @@ -262,6 +267,10 @@ main (int argc, char *argv[]) GNOME_PARAM_HUMAN_READABLE_NAME, _("Nautilus"), NULL); + if (session_to_load != NULL) { + no_default_window = TRUE; + } + /* Do this here so that gdk_display is initialized */ if (startup_id_copy == NULL) { /* Create a fake one containing a timestamp that we can use */ @@ -349,6 +358,7 @@ main (int argc, char *argv[]) browser_window, startup_id_copy, geometry, + session_to_load, remaining); g_free (startup_id_copy); Index: src/nautilus-navigation-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v retrieving revision 1.445 diff -u -p -r1.445 nautilus-navigation-window.c --- src/nautilus-navigation-window.c 18 Mar 2006 07:13:50 -0000 1.445 +++ src/nautilus-navigation-window.c 20 Jun 2006 17:52:25 -0000 @@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (Gt GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static gboolean +nautilus_navigation_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) { + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_navigation_window_destroy (GtkObject *object) { @@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry g_assert (NAUTILUS_IS_WINDOW (window)); - if (GTK_WIDGET(window)->window && - !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) { + if (GTK_WIDGET(window)->window) { geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window)); if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) { @@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry geometry_string); } g_free (geometry_string); + + if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) { + eel_preferences_set_boolean + (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, + gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED); + } } } @@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (N GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy; GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show; GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event; NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu; NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget; NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active; Index: src/nautilus-shell-interface.idl =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell-interface.idl,v retrieving revision 1.9 diff -u -p -r1.9 nautilus-shell-interface.idl --- src/nautilus-shell-interface.idl 19 Oct 2005 07:53:43 -0000 1.9 +++ src/nautilus-shell-interface.idl 20 Jun 2006 17:52:25 -0000 @@ -17,6 +17,7 @@ module Nautilus { void stop_desktop (); void quit (); void restart (); + void load_session (in string filename); }; }; Index: src/nautilus-shell.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-shell.c,v retrieving revision 1.62 diff -u -p -r1.62 nautilus-shell.c --- src/nautilus-shell.c 7 Apr 2006 22:47:22 -0000 1.62 +++ src/nautilus-shell.c 20 Jun 2006 17:52:26 -0000 @@ -72,6 +72,9 @@ static void corba_open_default_windo const CORBA_char *geometry, CORBA_boolean browser_window, CORBA_Environment *ev); +static void corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev); static void corba_start_desktop (PortableServer_Servant servant, CORBA_Environment *ev); static void corba_stop_desktop (PortableServer_Servant servant, @@ -93,6 +96,7 @@ nautilus_shell_class_init (NautilusShell klass->epv.open_windows = corba_open_windows; klass->epv.open_default_window = corba_open_default_window; + klass->epv.load_session = corba_load_session; klass->epv.start_desktop = corba_start_desktop; klass->epv.stop_desktop = corba_stop_desktop; klass->epv.quit = corba_quit; @@ -202,6 +206,20 @@ corba_open_default_window (PortableServe /* Open a window pointing at the default location. */ open_window (shell, NULL, startup_id, geometry, browser_window); } +} + +static void +corba_load_session (PortableServer_Servant servant, + const CORBA_char *filename, + CORBA_Environment *ev) +{ + NautilusShell *shell; + NautilusApplication *application; + + shell = NAUTILUS_SHELL (bonobo_object_from_servant (servant)); + application = NAUTILUS_APPLICATION (shell->details->application); + + nautilus_application_load_session (application, filename); } static void Index: src/nautilus-spatial-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v retrieving revision 1.459 diff -u -p -r1.459 nautilus-spatial-window.c --- src/nautilus-spatial-window.c 14 Apr 2006 11:57:23 -0000 1.459 +++ src/nautilus-spatial-window.c 20 Jun 2006 17:52:31 -0000 @@ -192,6 +192,25 @@ nautilus_spatial_window_unrealize (GtkWi } } +static gboolean +nautilus_spatial_window_state_event (GtkWidget *widget, + GdkEventWindowState *event) +{ + if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && + NAUTILUS_WINDOW (widget)->details->viewed_file != NULL) { + nautilus_file_set_boolean_metadata (NAUTILUS_WINDOW (widget)->details->viewed_file, + NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, + FALSE, + event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED); + } + + if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) { + return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event); + } + + return FALSE; +} + static void nautilus_spatial_window_destroy (GtkObject *object) { @@ -984,6 +1003,7 @@ nautilus_spatial_window_class_init (Naut GTK_WIDGET_CLASS (class)->show = nautilus_spatial_window_show; GTK_WIDGET_CLASS (class)->configure_event = nautilus_spatial_window_configure_event; GTK_WIDGET_CLASS (class)->unrealize = nautilus_spatial_window_unrealize; + GTK_WIDGET_CLASS (class)->window_state_event = nautilus_spatial_window_state_event; NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location; Index: src/nautilus-window-manage-views.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v retrieving revision 1.366 diff -u -p -r1.366 nautilus-window-manage-views.c --- src/nautilus-window-manage-views.c 8 May 2006 23:12:50 -0000 1.366 +++ src/nautilus-window-manage-views.c 20 Jun 2006 17:52:36 -0000 @@ -657,23 +657,6 @@ nautilus_window_content_view_matches_iid } -static gboolean -another_navigation_window_already_showing (NautilusWindow *the_window) -{ - GList *list, *item; - - list = nautilus_application_get_window_list (); - for (item = list; item != NULL; item = item->next) { - if (item->data != the_window && - NAUTILUS_IS_NAVIGATION_WINDOW (item->data)) { - return TRUE; - } - } - - return FALSE; -} - - /* * begin_location_change * @@ -783,6 +766,7 @@ setup_new_window (NautilusWindow *window char *show_hidden_file_setting; char *geometry_string; char *scroll_string; + gboolean maximized; if (NAUTILUS_IS_SPATIAL_WINDOW (window) && !NAUTILUS_IS_DESKTOP_WINDOW (window)) { /* load show hidden state */ @@ -801,6 +785,14 @@ setup_new_window (NautilusWindow *window g_free (show_hidden_file_setting); /* load the saved window geometry */ + maximized = nautilus_file_get_boolean_metadata + (file, NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED, FALSE); + if (maximized) { + gtk_window_maximize (GTK_WINDOW (window)); + } else { + gtk_window_unmaximize (GTK_WINDOW (window)); + } + geometry_string = nautilus_file_get_metadata (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL); if (geometry_string != NULL) { @@ -829,25 +821,6 @@ setup_new_window (NautilusWindow *window window->details->pending_scroll_to = scroll_string; } } - - if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) { - geometry_string = eel_preferences_get - (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY); - if (geometry_string != NULL && - geometry_string[0] != 0) { - /* Ignore saved window position if a window with the same - * location is already showing. That way the two windows - * wont appear at the exact same location on the screen. - */ - eel_gtk_window_set_initial_geometry_from_string - (GTK_WINDOW (window), - geometry_string, - NAUTILUS_WINDOW_MIN_WIDTH, - NAUTILUS_WINDOW_MIN_HEIGHT, - another_navigation_window_already_showing (window)); - } - g_free (geometry_string); - } } static void Index: src/nautilus-window-private.h =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v retrieving revision 1.113 diff -u -p -r1.113 nautilus-window-private.h --- src/nautilus-window-private.h 20 Mar 2006 18:40:38 -0000 1.113 +++ src/nautilus-window-private.h 20 Jun 2006 17:52:37 -0000 @@ -203,6 +203,10 @@ void nautilus_window_set_v void nautilus_send_history_list_changed (void); void nautilus_window_add_current_location_to_history_list (NautilusWindow *window); void nautilus_remove_from_history_list_no_notify (const char *location); +gboolean nautilus_add_to_history_list_no_notify (const char *location, + const char *name, + gboolean has_custom_name, + const char *icon); GList * nautilus_get_history_list (void); void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data); void nautilus_window_update_icon (NautilusWindow *window); Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.463 diff -u -p -r1.463 nautilus-window.c --- src/nautilus-window.c 20 Mar 2006 18:40:38 -0000 1.463 +++ src/nautilus-window.c 20 Jun 2006 17:52:43 -0000 @@ -1352,7 +1352,7 @@ remove_from_history_list (NautilusBookma } } -static void +static gboolean add_to_history_list (NautilusBookmark *bookmark) { /* Note that the history is shared amongst all windows so @@ -1389,8 +1389,10 @@ add_to_history_list (NautilusBookmark *b } } - nautilus_send_history_list_changed (); + return TRUE; } + + return FALSE; } void @@ -1403,12 +1405,30 @@ nautilus_remove_from_history_list_no_not g_object_unref (bookmark); } +gboolean +nautilus_add_to_history_list_no_notify (const char *uri, + const char *name, + gboolean has_custom_name, + const char *icon) +{ + NautilusBookmark *bookmark; + gboolean ret; + + bookmark = nautilus_bookmark_new_with_icon (uri, name, has_custom_name, icon); + ret = add_to_history_list (bookmark); + g_object_unref (bookmark); + + return ret; +} + static void real_add_current_location_to_history_list (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); - add_to_history_list (window->current_location_bookmark); + if (add_to_history_list (window->current_location_bookmark)) { + nautilus_send_history_list_changed (); + } } void --=-bgJ4fvimCkwAPOVjBPdI-- From alexl@redhat.com Wed Jun 21 03:27:07 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 58AA43B0D06 for ; Wed, 21 Jun 2006 03:27:07 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16837-02 for ; Wed, 21 Jun 2006 03:27:06 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id C69353B041C for ; Wed, 21 Jun 2006 03:27:05 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7R0RA028083; Wed, 21 Jun 2006 03:27:00 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QuFv031841; Wed, 21 Jun 2006 03:26:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5L7QrI9014055; Wed, 21 Jun 2006 03:26:55 -0400 Subject: Re: [PATCH] Improve session management, attempt 2 From: Alexander Larsson To: Christian Neumair In-Reply-To: <1150826329.5240.5.camel@localhost.localdomain> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 09:26:53 +0200 Message-Id: <1150874813.16397.58.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 07:27:07 -0000 On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > The session restart command includes > > > "--no-default-window" (nautilus-application.c:save_session). > > > > I guess that is good enough, although we could also always do that when > > specifying a session. Its unlikely that people would use the session > > switch manually though, so it doesn't really matter. > > New patch attached, which takes into account your other worthy > suggestions and makes --load-session imply presence of > --no-default-window. Looks good to commit then. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish sweet-toothed grifter from the 'hood. She's a violent impetuous bounty hunter who dreams of becoming Elvis. They fight crime! From carey@internode.on.net Tue Jun 20 08:48:53 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 355CC3B04D7 for ; Tue, 20 Jun 2006 08:48:53 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15989-01 for ; Tue, 20 Jun 2006 08:48:52 -0400 (EDT) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by menubar.gnome.org (Postfix) with ESMTP id 42D563B0510 for ; Tue, 20 Jun 2006 08:48:51 -0400 (EDT) Received: from [192.168.1.24] (ppp7-187.lns1.syd7.internode.on.net [59.167.7.187]) by smtp3.adl2.internode.on.net (8.13.6/8.13.5) with ESMTP id k5KCll85011167 for ; Tue, 20 Jun 2006 22:17:48 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org Content-Type: text/plain Date: Tue, 20 Jun 2006 22:47:47 +1000 Message-Id: <1150807667.5243.53.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-Mailman-Approved-At: Wed, 21 Jun 2006 08:27:09 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2006 12:48:53 -0000 Hi, I have remote drives mounted via NFS/SMB/etc on my laptops, and due to these remote directories being mounted, nautilus thinks they are local, and tries to generate previews for everything (very much not fun over a 256kbit or 512kbit uplink). Anyone know if there is a gconf setting or some way to get nautilus to be smarter about this and detect remote directories automatically (ie. partition not local, so therefore remote, then don't show preview)? Or at the least, a way to manually disable previews on a per-directory basis? Any ideas are appreciated. From chris@gnome-de.org Wed Jun 21 12:26:19 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 942C13B0F02 for ; Wed, 21 Jun 2006 12:26:19 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20942-09 for ; Wed, 21 Jun 2006 12:26:16 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id A4DE83B0FEE for ; Wed, 21 Jun 2006 12:26:15 -0400 (EDT) Received: (qmail 75238 invoked by uid 85); 21 Jun 2006 16:26:09 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.201671 secs); 21 Jun 2006 16:26:09 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 16:26:09 -0000 Subject: Re: [PATCH] Improve session management, attempt 2 From: Christian Neumair To: Alexander Larsson In-Reply-To: <1150874813.16397.58.camel@greebo> References: <1150466460.16424.7.camel@localhost.localdomain> <1150720115.16397.6.camel@greebo> <1150730577.5245.4.camel@localhost.localdomain> <1150732450.16397.12.camel@greebo> <1150826329.5240.5.camel@localhost.localdomain> <1150874813.16397.58.camel@greebo> Content-Type: text/plain Date: Wed, 21 Jun 2006 18:25:54 +0200 Message-Id: <1150907154.5245.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: Cc: nautilus-list X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:26:19 -0000 Am Mittwoch, den 21.06.2006, 09:26 +0200 schrieb Alexander Larsson: > On Tue, 2006-06-20 at 19:58 +0200, Christian Neumair wrote: > > Am Montag, den 19.06.2006, 17:54 +0200 schrieb Alexander Larsson: > > > On Mon, 2006-06-19 at 17:22 +0200, Christian Neumair wrote: > > > > > We shouldn't open a default window in this case. Did you handle that? > > > > > > > > The session restart command includes > > > > "--no-default-window" (nautilus-application.c:save_session). > > > > > > I guess that is good enough, although we could also always do that when > > > specifying a session. Its unlikely that people would use the session > > > switch manually though, so it doesn't really matter. > > > > New patch attached, which takes into account your other worthy > > suggestions and makes --load-session imply presence of > > --no-default-window. > > Looks good to commit then. Done :). -- Christian Neumair From chris@gnome-de.org Wed Jun 21 15:37:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 850B73B0090 for ; Wed, 21 Jun 2006 15:37:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00594-08 for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 40A563B007C for ; Wed, 21 Jun 2006 15:37:26 -0400 (EDT) Received: (qmail 73397 invoked by uid 85); 21 Jun 2006 19:37:12 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 0.304044 secs); 21 Jun 2006 19:37:12 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:37:12 -0000 Subject: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-rdcaTTcK9Z9jAJx6/pO4" Date: Wed, 21 Jun 2006 21:37:08 +0200 Message-Id: <1150918628.5245.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:37:28 -0000 --=-rdcaTTcK9Z9jAJx6/pO4 Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch should fix issues where handlers registered with GtkActionGroups override those registered with child widgets, cf. bug 345528 [1]. [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 -- Christian Neumair --=-rdcaTTcK9Z9jAJx6/pO4 Content-Disposition: attachment; filename=nautilus-window-keybindings.diff Content-Type: text/x-patch; name=nautilus-window-keybindings.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: src/nautilus-window.c =================================================================== RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v retrieving revision 1.465 diff -u -p -r1.465 nautilus-window.c --- src/nautilus-window.c 21 Jun 2006 16:26:23 -0000 1.465 +++ src/nautilus-window.c 21 Jun 2006 19:31:34 -0000 @@ -742,6 +742,35 @@ nautilus_window_realize (GtkWidget *widg update_cursor (NAUTILUS_WINDOW (widget)); } +/* try to propagate key press event to children before handling + * mnemonics related to action groups. This is for instance relevant + * when the GtkAction file deletion keybinding would be activated + * instead of the rename widget text deletion keybinding. + */ +static gint +nautilus_window_key_press_event (GtkWidget *widget, + GdkEventKey *event) +{ + GtkWindow *window = GTK_WINDOW (widget); + + if (!gtk_window_propagate_key_event (window, event) && + !gtk_window_activate_key (window, event)) { + /* skip GtkWindow handler, directly use GtkWidget method */ + + static GtkWidgetClass *gtk_widget_class = NULL; + if (gtk_widget_class == NULL) { + gtk_widget_class = g_type_class_peek (gtk_widget_get_type ()); + g_assert (gtk_widget_class != NULL); + g_assert (gtk_widget_class->key_press_event != NULL); + } + + return GTK_WIDGET_CLASS (gtk_widget_class)->key_press_event (widget, event); + } + + return TRUE; + +} + /* * Main API */ @@ -1583,6 +1612,7 @@ nautilus_window_class_init (NautilusWind GTK_WIDGET_CLASS (class)->show = nautilus_window_show; GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request; GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize; + GTK_WIDGET_CLASS (class)->key_press_event = nautilus_window_key_press_event; class->add_current_location_to_history_list = real_add_current_location_to_history_list; class->get_title = real_get_title; class->set_title = real_set_title; --=-rdcaTTcK9Z9jAJx6/pO4-- From chris@gnome-de.org Wed Jun 21 15:51:01 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 0B0923B00E2 for ; Wed, 21 Jun 2006 15:51:01 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01297-07 for ; Wed, 21 Jun 2006 15:51:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 566013B01E2 for ; Wed, 21 Jun 2006 15:50:59 -0400 (EDT) Received: (qmail 5765 invoked by uid 85); 21 Jun 2006 19:50:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.143.65):. Processed in 2.075383 secs); 21 Jun 2006 19:50:58 -0000 Received: from p54968f41.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.143.65) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 21 Jun 2006 19:50:54 -0000 Subject: Re: [PATCH] override GtkWindow key-press-event handler From: Christian Neumair To: nautilus-list In-Reply-To: <1150918628.5245.9.camel@localhost.localdomain> References: <1150918628.5245.9.camel@localhost.localdomain> Content-Type: text/plain Date: Wed, 21 Jun 2006 21:50:50 +0200 Message-Id: <1150919450.5245.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 19:51:01 -0000 Am Mittwoch, den 21.06.2006, 21:37 +0200 schrieb Christian Neumair: > The attached patch should fix issues where handlers registered with > GtkActionGroups override those registered with child widgets, cf. bug > 345528 [1]. > > [1] http://bugzilla.gnome.org/show_bug.cgi?id=345528 It seems to break keynav in subtle ways, and requires a stricter modifier mask checking for our custom widgets (icon container etc.) which for instance eats alt+arrow key. -- Christian Neumair From patrick.jacquotf@free.fr Wed Jun 21 17:59:06 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4E9CA3B04CB for ; Wed, 21 Jun 2006 17:59:06 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08416-10 for ; Wed, 21 Jun 2006 17:59:05 -0400 (EDT) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by menubar.gnome.org (Postfix) with ESMTP id C303B3B0429 for ; Wed, 21 Jun 2006 17:59:04 -0400 (EDT) Received: from [192.168.0.1] (fny94-1-81-57-170-53.fbx.proxad.net [81.57.170.53]) by smtp4-g19.free.fr (Postfix) with ESMTP id CF45454943; Wed, 21 Jun 2006 23:59:01 +0200 (CEST) Subject: Re: Nautilus remote previews From: Patrick Jacquot To: Carey O'Shea In-Reply-To: <1150807667.5243.53.camel@carey-laptop> References: <1150807667.5243.53.camel@carey-laptop> Content-Type: text/plain; charset=utf-8 Date: Wed, 21 Jun 2006 23:58:55 +0200 Message-Id: <1150927136.12639.8.camel@proton> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.5) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.578 tagged_above=-999 required=2 tests=[AWL=0.021, BAYES_00=-2.599] X-Spam-Score: -2.578 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 21:59:06 -0000 Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > Hi, > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > these remote directories being mounted, nautilus thinks they are local, > and tries to generate previews for everything (very much not fun over a > 256kbit or 512kbit uplink). > > Anyone know if there is a gconf setting or some way to get nautilus to > be smarter about this and detect remote directories automatically (ie. > partition not local, so therefore remote, then don't show preview)? > > Or at the least, a way to manually disable previews on a per-directory > basis? > > Any ideas are appreciated. > > In the Nautilus preferences, tab "previews", you can ask the previews for "only local files"; separately for sound files and for "other previews" i.e. images. There are three choices for each category: _ never - always - for local files only HTH -- Patrick From carey@internode.on.net Thu Jun 22 02:11:20 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id B7BCC3B02D2 for ; Thu, 22 Jun 2006 02:11:20 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32425-06 for ; Thu, 22 Jun 2006 02:11:17 -0400 (EDT) Received: from ash25e.internode.on.net (ash25e.internode.on.net [203.16.214.182]) by menubar.gnome.org (Postfix) with ESMTP id 0FB013B0234 for ; Thu, 22 Jun 2006 02:11:16 -0400 (EDT) Received: from [192.168.1.2] (ppp19-139.lns2.syd7.internode.on.net [59.167.19.139]) by ash25e.internode.on.net (8.13.6/8.13.5) with ESMTP id k5M6BEqD069510 for ; Thu, 22 Jun 2006 15:41:14 +0930 (CST) (envelope-from carey@internode.on.net) Subject: Re: Nautilus remote previews From: "Carey O'Shea" To: nautilus-list@gnome.org In-Reply-To: <1150927136.12639.8.camel@proton> References: <1150807667.5243.53.camel@carey-laptop> <1150927136.12639.8.camel@proton> Content-Type: text/plain; charset=UTF-8 Date: Thu, 22 Jun 2006 16:11:13 +1000 Message-Id: <1150956674.22582.4.camel@carey-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.601 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.601 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:11:20 -0000 Thanks for your reply. My problem is that the "Local Files Only" option does not work with remotely mounted SMB directories. Is this problem known? Regards, Carey. On Wed, 2006-06-21 at 23:58 +0200, Patrick Jacquot wrote: > Le mardi 20 juin 2006 à 22:47 +1000, Carey O'Shea a écrit : > > Hi, > > > > I have remote drives mounted via NFS/SMB/etc on my laptops, and due to > > these remote directories being mounted, nautilus thinks they are local, > > and tries to generate previews for everything (very much not fun over a > > 256kbit or 512kbit uplink). > > > > Anyone know if there is a gconf setting or some way to get nautilus to > > be smarter about this and detect remote directories automatically (ie. > > partition not local, so therefore remote, then don't show preview)? > > > > Or at the least, a way to manually disable previews on a per-directory > > basis? > > > > Any ideas are appreciated. > > > > > In the Nautilus preferences, tab "previews", you can ask the previews > for "only local files"; separately for sound files and for > "other previews" i.e. images. There are three choices for each category: > _ never > - always > - for local files only > HTH From alan.gibson@gmail.com Thu Jun 22 02:26:00 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 4B0F33B02AB for ; Thu, 22 Jun 2006 02:26:00 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01065-01 for ; Thu, 22 Jun 2006 02:25:59 -0400 (EDT) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by menubar.gnome.org (Postfix) with ESMTP id 6C3993B026A for ; Thu, 22 Jun 2006 02:25:58 -0400 (EDT) Received: by nf-out-0910.google.com with SMTP id h2so219295nfe for ; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.241.6 with SMTP id o6mr1278015nfh; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Received: by 10.48.231.16 with HTTP; Wed, 21 Jun 2006 23:25:57 -0700 (PDT) Message-ID: Date: Wed, 21 Jun 2006 23:25:57 -0700 From: "Alan Gibson" To: nautilus-list@gnome.org Subject: not landing in SFTP home directory MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.6 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, SPF_PASS=-0.001] X-Spam-Score: -2.6 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 06:26:00 -0000 hello all. first post, good to be here. gnome, and by extension nautilus, are excellent apps. now to the problem: when i access an SFTP server added via "Connect to Server..." the default directory is the root of the server, not my home directory. the same operation with `sftp` lands me in my home directory. this behavior makes "connect to server" unusable for many users. this was filed as a bug, along with another problem, here: http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. anyone have any idea of the status of this, or if it this behavior is going to stay this way? thanks much, alan From alexl@redhat.com Thu Jun 22 03:43:59 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id CED983B018C for ; Thu, 22 Jun 2006 03:43:59 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05592-05 for ; Thu, 22 Jun 2006 03:43:57 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by menubar.gnome.org (Postfix) with ESMTP id 025A73B021B for ; Thu, 22 Jun 2006 03:43:56 -0400 (EDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7huku029640; Thu, 22 Jun 2006 03:43:56 -0400 Received: from devserv.devel.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7hugX028990; Thu, 22 Jun 2006 03:43:56 -0400 Received: from [127.0.0.1] (sebastian-int.corp.redhat.com [172.16.52.221]) by devserv.devel.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k5M7ht6g030438; Thu, 22 Jun 2006 03:43:55 -0400 Subject: Re: not landing in SFTP home directory From: Alexander Larsson To: Alan Gibson In-Reply-To: References: Content-Type: text/plain Date: Thu, 22 Jun 2006 09:43:54 +0200 Message-Id: <1150962235.16397.105.camel@greebo> Mime-Version: 1.0 X-Mailer: Evolution 2.7.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.588 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.588 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 07:44:00 -0000 On Wed, 2006-06-21 at 23:25 -0700, Alan Gibson wrote: > hello all. first post, good to be here. gnome, and by extension > nautilus, are excellent apps. > > now to the problem: > > when i access an SFTP server added via "Connect to Server..." the > default directory is the root of the server, not my home directory. > the same operation with `sftp` lands me in my home directory. this > behavior makes "connect to server" unusable for many users. > > this was filed as a bug, along with another problem, here: > http://bugzilla.gnome.org/show_bug.cgi?id=332738. that bug was filed > against 2.12.X on 2006-02-27 and this is still the behavior in 2.14.1. > > anyone have any idea of the status of this, or if it this behavior is > going to stay this way? Its clearly a bug, so hopefully it'll get fixed eventually. The reason its not fixed is the standard "not enough resources" one. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a gun-slinging crooked card sharp plagued by the memory of his family's brutal murder. She's a provocative belly-dancing soap star married to the Mob. They fight crime! From chris@gnome-de.org Thu Jun 22 16:19:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 6CB943B0357 for ; Thu, 22 Jun 2006 16:19:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23663-07 for ; Thu, 22 Jun 2006 16:19:00 -0400 (EDT) Received: from mail.bytecamp.net (mail.bytecamp.net [212.204.60.9]) by menubar.gnome.org (Postfix) with SMTP id 036763B0859 for ; Thu, 22 Jun 2006 16:18:04 -0400 (EDT) Received: (qmail 80585 invoked by uid 85); 22 Jun 2006 20:17:58 -0000 Received: from chris@gnome-de.org by mail.bytecamp.net by uid 88 with qmail-scanner-1.20 (clamscan: 0.88.1 Clear:RC:0(84.150.147.150):. Processed in 3.06236 secs); 22 Jun 2006 20:17:58 -0000 Received: from p54969396.dip0.t-ipconnect.de (HELO ?192.168.123.112?) (chris@gnome-de.org@84.150.147.150) by mail.bytecamp.net with RC4-MD5 encrypted SMTP; 22 Jun 2006 20:17:55 -0000 Subject: [PATCH] allow to drop URIs, URLs and text to subfolders From: Christian Neumair To: nautilus-list Content-Type: multipart/mixed; boundary="=-wko5hNaIXKFzt/OLy/jx" Date: Thu, 22 Jun 2006 22:17:51 +0200 Message-Id: <1151007472.19595.3.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.586 tagged_above=-999 required=2 tests=[AWL=0.013, BAYES_00=-2.599] X-Spam-Score: -2.586 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2006 20:19:11 -0000 --=-wko5hNaIXKFzt/OLy/jx Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached patch considers subfolders as drop targets for non-GNOME Icon List drag data that refers to files. -- Christian Neumair --=-wko5hNaIXKFzt/OLy/jx Content-Disposition: attachment; filename=nautilus-dnd.diff Content-Type: text/x-patch; name=nautilus-dnd.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: libnautilus-private/nautilus-file-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.c,v retrieving revision 1.7 diff -u -p -r1.7 nautilus-file-dnd.c --- libnautilus-private/nautilus-file-dnd.c 12 Dec 2005 16:59:10 -0000 1.7 +++ libnautilus-private/nautilus-file-dnd.c 22 Jun 2006 19:52:31 -0000 @@ -32,19 +32,14 @@ #include #include -gboolean -nautilus_drag_can_accept_item (NautilusFile *drop_target_item, - const char *item_uri) +static gboolean +nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; - gboolean res; - - if (nautilus_file_matches_uri (drop_target_item, item_uri)) { - /* can't accept itself */ - return FALSE; - } - + if (nautilus_file_is_directory (drop_target_item)) { + gboolean res; + /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); @@ -68,7 +63,19 @@ nautilus_drag_can_accept_item (NautilusF return FALSE; } - + +gboolean +nautilus_drag_can_accept_item (NautilusFile *drop_target_item, + const char *item_uri) +{ + if (nautilus_file_matches_uri (drop_target_item, item_uri)) { + /* can't accept itself */ + return FALSE; + } + + return nautilus_drag_can_accept_files (drop_target_item); +} + gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items) @@ -92,6 +99,39 @@ nautilus_drag_can_accept_items (Nautilus } return TRUE; +} + +gboolean +nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items) +{ + switch (drag_type) { + case NAUTILUS_ICON_DND_GNOME_ICON_LIST: + return nautilus_drag_can_accept_items (drop_target_item, items); + + case NAUTILUS_ICON_DND_URI_LIST: + case NAUTILUS_ICON_DND_URL: + case NAUTILUS_ICON_DND_TEXT: + return nautilus_drag_can_accept_files (drop_target_item); + + case NAUTILUS_ICON_DND_KEYWORD: + return TRUE; + + case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: + return FALSE; + + /* TODO return TRUE for folders as soon as drop handling is implemented */ + case NAUTILUS_ICON_DND_COLOR: + case NAUTILUS_ICON_DND_BGIMAGE: + case NAUTILUS_ICON_DND_RESET_BACKGROUND: + return FALSE; + + default: + g_assert_not_reached (); + return FALSE; + } + } void Index: libnautilus-private/nautilus-file-dnd.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-dnd.h,v retrieving revision 1.5 diff -u -p -r1.5 nautilus-file-dnd.h --- libnautilus-private/nautilus-file-dnd.h 22 Feb 2002 18:54:15 -0000 1.5 +++ libnautilus-private/nautilus-file-dnd.h 22 Jun 2006 19:52:31 -0000 @@ -25,6 +25,7 @@ #ifndef NAUTILUS_FILE_DND_H #define NAUTILUS_FILE_DND_H +#include #include #define NAUTILUS_FILE_DND_ERASE_KEYWORD "erase" @@ -33,6 +34,9 @@ gboolean nautilus_drag_can_accept_item const char *item_uri); gboolean nautilus_drag_can_accept_items (NautilusFile *drop_target_item, const GList *items); +gboolean nautilus_drag_can_accept_info (NautilusFile *drop_target_item, + NautilusIconDndTargetType drag_type, + const GList *items); void nautilus_drag_file_receive_dropped_keyword (NautilusFile *file, const char *keyword); Index: libnautilus-private/nautilus-icon-container.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v retrieving revision 1.415 diff -u -p -r1.415 nautilus-icon-container.c --- libnautilus-private/nautilus-icon-container.c 15 May 2006 22:55:24 -0000 1.415 +++ libnautilus-private/nautilus-icon-container.c 22 Jun 2006 19:53:16 -0000 @@ -4596,8 +4604,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4609,8 +4618,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -4622,8 +4632,9 @@ nautilus_icon_container_class_init (Naut G_STRUCT_OFFSET (NautilusIconContainerClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: libnautilus-private/nautilus-icon-container.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.h,v retrieving revision 1.92 diff -u -p -r1.92 nautilus-icon-container.h --- libnautilus-private/nautilus-icon-container.h 15 May 2006 22:55:24 -0000 1.92 +++ libnautilus-private/nautilus-icon-container.h 22 Jun 2006 19:53:18 -0000 Index: libnautilus-private/nautilus-icon-dnd.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-dnd.c,v retrieving revision 1.154 diff -u -p -r1.154 nautilus-icon-dnd.c --- libnautilus-private/nautilus-icon-dnd.c 15 May 2006 22:55:24 -0000 1.154 +++ libnautilus-private/nautilus-icon-dnd.c 22 Jun 2006 19:53:21 -0000 @@ -84,6 +84,10 @@ static void dnd_highlight_queue_redr static GtkTargetList *drop_types_list = NULL; static GtkTargetList *drop_types_list_root = NULL; +static char * nautilus_icon_container_find_drop_target (NautilusIconContainer *container, + GdkDragContext *context, + int x, int y, gboolean *icon_hit); + static EelCanvasItem * create_selection_shadow (NautilusIconContainer *container, GList *list) @@ -618,44 +622,65 @@ receive_dropped_keyword (NautilusIconCon /* handle dropped url */ static void -receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y) +receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragContext *context, int x, int y) { + char *drop_target; + if (encoded_url == NULL) { return; } + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_url", encoded_url, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped uri list */ static void -receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y) +receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragContext *context, int x, int y) { + char *drop_target; + if (uri_list == NULL) { return; } - + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); + g_signal_emit_by_name (container, "handle_uri_list", uri_list, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } /* handle dropped text */ static void -receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragAction action, int x, int y) +receive_dropped_text (NautilusIconContainer *container, const char *text, GdkDragContext *context, int x, int y) { + char *drop_target; + if (text == NULL) { return; } + + drop_target = nautilus_icon_container_find_drop_target (container, context, x, y, NULL); g_signal_emit_by_name (container, "handle_text", text, - action, + drop_target, + context->action, x, y); + + g_free (drop_target); } static int @@ -843,7 +868,7 @@ handle_local_move (NautilusIconContainer nautilus_icon_container_add (container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - FALSE); + FALSE, FALSE); icon = nautilus_icon_container_get_icon_by_uri (container, item->uri); @@ -939,8 +964,11 @@ nautilus_icon_container_find_drop_target NautilusFile *file; char *icon_uri; - *icon_hit = FALSE; - if (container->details->dnd_info->drag_info.selection_list == NULL) { + if (icon_hit) { + *icon_hit = FALSE; + } + + if (!container->details->dnd_info->drag_info.got_drop_data_type) { return NULL; } @@ -959,8 +987,9 @@ nautilus_icon_container_find_drop_target if (icon_uri != NULL) { file = nautilus_file_get (icon_uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { /* the item we dropped our selection on cannot accept the items, * do the same thing as if we just dropped the items on the canvas */ @@ -973,11 +1002,16 @@ nautilus_icon_container_find_drop_target } if (drop_target_icon == NULL) { - *icon_hit = FALSE; + if (icon_hit) { + *icon_hit = FALSE; + } + return get_container_uri (container); } - *icon_hit = TRUE; + if (icon_hit) { + *icon_hit = TRUE; + } return nautilus_icon_container_get_icon_drop_target_uri (container, drop_target_icon); } @@ -1177,10 +1211,6 @@ nautilus_icon_dnd_update_drop_target (Na char *uri; g_assert (NAUTILUS_IS_ICON_CONTAINER (container)); - if ((container->details->dnd_info->drag_info.selection_list == NULL) - && (container->details->dnd_info->drag_info.data_type != NAUTILUS_ICON_DND_KEYWORD)) { - return; - } canvas_widget_to_world (EEL_CANVAS (container), x, y, &world_x, &world_y); @@ -1199,8 +1229,9 @@ nautilus_icon_dnd_update_drop_target (Na file = nautilus_file_get (uri); g_free (uri); - if (!nautilus_drag_can_accept_items (file, - container->details->dnd_info->drag_info.selection_list)) { + if (!nautilus_drag_can_accept_info (file, + container->details->dnd_info->drag_info.data_type, + container->details->dnd_info->drag_info.selection_list)) { icon = NULL; } @@ -1642,20 +1673,20 @@ drag_data_received_callback (GtkWidget * case NAUTILUS_ICON_DND_URL: receive_dropped_url (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_URI_LIST: receive_dropped_uri_list (NAUTILUS_ICON_CONTAINER (widget), - (char *) data->data, context->action, x, y); + (char *) data->data, context, x, y); success = TRUE; break; case NAUTILUS_ICON_DND_TEXT: tmp = gtk_selection_data_get_text (data); receive_dropped_text (NAUTILUS_ICON_CONTAINER (widget), - (char *) tmp, context->action, x, y); + (char *) tmp, context, x, y); success = TRUE; g_free (tmp); break; Index: libnautilus-private/nautilus-marshal.list =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-marshal.list,v retrieving revision 1.11 diff -u -p -r1.11 nautilus-marshal.list --- libnautilus-private/nautilus-marshal.list 12 Dec 2005 16:59:10 -0000 1.11 +++ libnautilus-private/nautilus-marshal.list 22 Jun 2006 19:53:27 -0000 @@ -16,5 +16,6 @@ VOID:POINTER,POINTER VOID:POINTER,POINTER,POINTER,ENUM,INT,INT VOID:POINTER,STRING VOID:POINTER,STRING,ENUM,INT,INT +VOID:STRING,STRING,ENUM,INT,INT VOID:STRING,ENUM,INT,INT VOID:STRING,STRING Index: libnautilus-private/nautilus-tree-view-drag-dest.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-tree-view-drag-dest.c,v retrieving revision 1.14 diff -u -p -r1.14 nautilus-tree-view-drag-dest.c --- libnautilus-private/nautilus-tree-view-drag-dest.c 27 Feb 2006 21:54:58 -0000 1.14 +++ libnautilus-private/nautilus-tree-view-drag-dest.c 22 Jun 2006 19:53:31 -0000 @@ -306,7 +306,7 @@ get_drop_path (NautilusTreeViewDragDest NautilusFile *file; GtkTreePath *ret; - if (!path) { + if (!path || !dest->details->have_drag_data) { return NULL; } @@ -315,7 +315,9 @@ get_drop_path (NautilusTreeViewDragDest /* Go up the tree until we find a file that can accept a drop */ while (file == NULL /* dummy row */ || - !nautilus_drag_can_accept_items (file, dest->details->drag_list)) { + !nautilus_drag_can_accept_info (file, + dest->details->drag_type, + dest->details->drag_list)) { if (gtk_tree_path_get_depth (ret) == 1) { gtk_tree_path_free (ret); ret = NULL; @@ -333,8 +335,8 @@ get_drop_path (NautilusTreeViewDragDest } static char * -get_drop_target (NautilusTreeViewDragDest *dest, - GtkTreePath *path) +get_drop_target_uri_for_path (NautilusTreeViewDragDest *dest, + GtkTreePath *path) { NautilusFile *file; char *target; @@ -366,7 +368,7 @@ get_drop_action (NautilusTreeViewDragDes switch (dest->details->drag_type) { case NAUTILUS_ICON_DND_GNOME_ICON_LIST : - drop_target = get_drop_target (dest, path); + drop_target = get_drop_target_uri_for_path (dest, path); if (!drop_target) { return 0; @@ -383,9 +385,27 @@ get_drop_action (NautilusTreeViewDragDes return action; case NAUTILUS_ICON_DND_URL: - return nautilus_drag_default_drop_action_for_url (context); + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + action = nautilus_drag_default_drop_action_for_url (context); + + g_free (drop_target); + + return action; case NAUTILUS_ICON_DND_URI_LIST : + drop_target = get_drop_target_uri_for_path (dest, path); + + if (drop_target == NULL) { + return 0; + } + + g_free (drop_target); + return context->suggested_action; case NAUTILUS_ICON_DND_TEXT: @@ -497,24 +517,43 @@ drag_leave_callback (GtkWidget *widget, remove_expand_timeout (dest); } -static void -receive_uris (NautilusTreeViewDragDest *dest, - GdkDragContext *context, - GList *source_uris, - int x, int y) +static char * +get_drop_target_uri_at_pos (NautilusTreeViewDragDest *dest, int x, int y) { char *drop_target; GtkTreePath *path; GtkTreePath *drop_path; GtkTreeViewDropPosition pos; - GdkDragAction action; gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, &path, &pos); drop_path = get_drop_path (dest, path); - drop_target = get_drop_target (dest, drop_path); + drop_target = get_drop_target_uri_for_path (dest, drop_path); + + if (path != NULL) { + gtk_tree_path_free (path); + } + + if (drop_path != NULL) { + gtk_tree_path_free (drop_path); + } + + return drop_target; +} + +static void +receive_uris (NautilusTreeViewDragDest *dest, + GdkDragContext *context, + GList *source_uris, + int x, int y) +{ + char *drop_target; + GdkDragAction action; + + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); if (context->action == GDK_ACTION_ASK) { if (nautilus_drag_selection_includes_special_link (dest->details->drag_list)) { @@ -540,14 +579,6 @@ receive_uris (NautilusTreeViewDragDest * x, y); } - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target); } @@ -583,14 +614,22 @@ receive_dropped_uri_list (NautilusTreeVi GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URI_LIST], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -598,18 +637,24 @@ receive_dropped_text (NautilusTreeViewDr GdkDragContext *context, int x, int y) { + char *drop_target; char *text; if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + text = gtk_selection_data_get_text (dest->details->drag_data); g_signal_emit (dest, signals[HANDLE_TEXT], 0, - (char *) text, + (char *) text, drop_target, context->action, x, y); + g_free (text); + g_free (drop_target); } @@ -618,14 +663,22 @@ receive_dropped_url (NautilusTreeViewDra GdkDragContext *context, int x, int y) { + char *drop_target; + if (!dest->details->drag_data) { return; } + drop_target = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target != NULL); + g_signal_emit (dest, signals[HANDLE_URL], 0, (char*)dest->details->drag_data->data, + drop_target, context->action, x, y); + + g_free (drop_target); } static void @@ -634,15 +687,14 @@ receive_dropped_keyword (NautilusTreeVie int x, int y) { char *drop_target_uri; - GtkTreePath *path, *drop_path; NautilusFile *drop_target_file; - gtk_tree_view_get_dest_row_at_pos (dest->details->tree_view, x, y, - &path, NULL); - - drop_path = get_drop_path (dest, path); + if (!dest->details->drag_data) { + return; + } - drop_target_uri = get_drop_target (dest, drop_path); + drop_target_uri = get_drop_target_uri_at_pos (dest, x, y); + g_assert (drop_target_uri != NULL); drop_target_file = nautilus_file_get (drop_target_uri); @@ -652,15 +704,6 @@ receive_dropped_keyword (NautilusTreeVie nautilus_file_unref (drop_target_file); } - - if (path) { - gtk_tree_path_free (path); - } - - if (drop_path) { - gtk_tree_path_free (drop_path); - } - g_free (drop_target_uri); } @@ -854,8 +897,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_url), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -867,8 +911,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_uri_list), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, @@ -880,8 +925,9 @@ nautilus_tree_view_drag_dest_class_init G_STRUCT_OFFSET (NautilusTreeViewDragDestClass, handle_text), NULL, NULL, - nautilus_marshal_VOID__STRING_ENUM_INT_INT, - G_TYPE_NONE, 4, + nautilus_marshal_VOID__STRING_STRING_ENUM_INT_INT, + G_TYPE_NONE, 5, + G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_DRAG_ACTION, G_TYPE_INT, Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.745 diff -u -p -r1.745 fm-directory-view.c --- src/file-manager/fm-directory-view.c 16 Jun 2006 15:40:18 -0000 1.745 +++ src/file-manager/fm-directory-view.c 22 Jun 2006 20:08:33 -0000 @@ -1415,7 +1415,7 @@ action_new_empty_file_callback (GtkActio { g_assert (FM_IS_DIRECTORY_VIEW (callback_data)); - fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL); + fm_directory_view_new_file (FM_DIRECTORY_VIEW (callback_data), NULL, NULL); } static void @@ -4217,36 +4217,45 @@ setup_new_folder_data (FMDirectoryView * static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, + const char *parent_uri, const char *initial_contents) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; + + g_assert (parent_uri != NULL); data = setup_new_folder_data (directory_view); pos = context_menu_to_file_operation_position (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), pos, parent_uri, initial_contents, new_folder_done, data); - - g_free (parent_uri); } void fm_directory_view_new_file (FMDirectoryView *directory_view, + const char *parent_uri, NautilusFile *source) { GdkPoint *pos; NewFolderData *data; - char *parent_uri; char *source_uri; + char *container_uri; + + container_uri = NULL; + if (parent_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (directory_view); + g_assert (container_uri != NULL); + } if (source == NULL) { - fm_directory_view_new_file_with_initial_contents (directory_view, NULL); + fm_directory_view_new_file_with_initial_contents (directory_view, + parent_uri != NULL ? parent_uri : container_uri, + NULL); + g_free (container_uri); return; } @@ -4257,17 +4266,16 @@ fm_directory_view_new_file (FMDirectoryV data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); - parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), pos, - parent_uri, + parent_uri != NULL ? parent_uri : container_uri, NULL, source_uri, new_folder_done, data); - g_free (parent_uri); g_free (source_uri); + g_free (container_uri); } /* handle the open command */ @@ -4782,7 +4790,8 @@ extension_action_callback_data_free (Ext { g_object_unref (data->item); nautilus_file_list_free (data->selection); - + g_object_unref (data->view); + g_free (data); } @@ -4826,6 +4835,12 @@ extension_action_slow_mime_types_ready_c g_free (item_name); if (is_valid) { + char *display; + + display = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (data->view))); + g_setenv ("DISPLAY", display, TRUE); + g_free (display); + nautilus_menu_item_activate (data->item); } @@ -4890,7 +4905,7 @@ add_extension_action_for_files (FMDirect data = g_new0 (ExtensionActionCallbackData, 1); data->item = g_object_ref (item); - data->view = view; + data->view = g_object_ref (view); data->selection = nautilus_file_list_copy (files); data->action = action; @@ -5567,7 +5582,7 @@ create_template_callback (GtkAction *act parameters = callback_data; - fm_directory_view_new_file (parameters->directory_view, parameters->file); + fm_directory_view_new_file (parameters->directory_view, NULL, parameters->file); } static void @@ -9632,6 +9647,7 @@ ask_link_action (FMDirectoryView *view) void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9652,10 +9668,13 @@ fm_directory_view_handle_url_drop (FMDir return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } - if (eel_vfs_has_capability (container_uri, + if (eel_vfs_has_capability (target_uri != NULL ? target_uri : container_uri, EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) { eel_show_warning_dialog (_("Drag and drop is not supported."), _("Drag and drop is only supported on local file systems."), @@ -9736,7 +9755,7 @@ fm_directory_view_handle_url_drop (FMDir screen = gtk_widget_get_screen (GTK_WIDGET (view)); screen_num = gdk_screen_get_number (screen); - nautilus_link_local_create (container_uri, + nautilus_link_local_create (target_uri != NULL ? target_uri : container_uri, link_name, link_display_name, "gnome-fs-bookmark", @@ -9758,7 +9777,7 @@ fm_directory_view_handle_url_drop (FMDir uri_list = g_list_append (uri_list, url); fm_directory_view_move_copy_items (uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); g_list_free (uri_list); @@ -9773,6 +9792,7 @@ fm_directory_view_handle_url_drop (FMDir void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9787,8 +9807,11 @@ fm_directory_view_handle_uri_list_drop ( return; } - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } if (action == GDK_ACTION_ASK) { action = nautilus_drag_drop_action_ask @@ -9847,7 +9870,7 @@ fm_directory_view_handle_uri_list_drop ( } fm_directory_view_move_copy_items (real_uri_list, points, - container_uri, + target_uri != NULL ? target_uri : container_uri, action, x, y, view); eel_g_list_free_deep (real_uri_list); @@ -9861,6 +9884,7 @@ fm_directory_view_handle_uri_list_drop ( void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y) @@ -9873,11 +9897,14 @@ fm_directory_view_handle_text_drop (FMDi g_return_if_fail (action == GDK_ACTION_COPY); - container_uri = fm_directory_view_get_backing_uri (view); - g_return_if_fail (container_uri != NULL); + container_uri = NULL; + if (target_uri == NULL) { + container_uri = fm_directory_view_get_backing_uri (view); + g_assert (container_uri != NULL); + } fm_directory_view_new_file_with_initial_contents ( - view, text); + view, target_uri != NULL ? target_uri : container_uri, text); g_free (container_uri); } Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.144 diff -u -p -r1.144 fm-directory-view.h --- src/file-manager/fm-directory-view.h 30 Mar 2006 19:37:22 -0000 1.144 +++ src/file-manager/fm-directory-view.h 22 Jun 2006 20:08:34 -0000 @@ -404,21 +404,25 @@ gboolean fm_directory_view_should_so void fm_directory_view_update_menus (FMDirectoryView *view); void fm_directory_view_new_folder (FMDirectoryView *view); void fm_directory_view_new_file (FMDirectoryView *view, + const char *parent_uri, NautilusFile *source); void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view); void fm_directory_view_init_view_iface (NautilusViewIface *iface); void fm_directory_view_handle_url_drop (FMDirectoryView *view, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y); void fm_directory_view_handle_text_drop (FMDirectoryView *view, const char *text, + const char *target_uri, GdkDragAction action, int x, int y); Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.323 diff -u -p -r1.323 fm-icon-view.c --- src/file-manager/fm-icon-view.c 15 May 2006 22:55:25 -0000 1.323 +++ src/file-manager/fm-icon-view.c 22 Jun 2006 20:08:41 -0000 @@ -553,7 +553,8 @@ fm_icon_view_add_file (FMDirectoryView * if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2077,7 +2078,8 @@ fm_icon_view_screen_changed (GtkWidget * } else { if (nautilus_icon_container_add (icon_container, NAUTILUS_ICON_CONTAINER_ICON_DATA (file), - file_has_lazy_position (view, file))) { + file_has_lazy_position (view, file), + nautilus_icon_factory_can_thumbnail (file))) { nautilus_file_ref (file); } } @@ -2527,26 +2529,29 @@ create_icon_container (FMIconView *icon_ /* Handles an URL received from Mozilla */ static void icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void icon_view_handle_uri_list (NautilusIconContainer *container, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void icon_view_handle_text (NautilusIconContainer *container, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMIconView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static char * Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.270 diff -u -p -r1.270 fm-list-view.c --- src/file-manager/fm-list-view.c 24 May 2006 13:20:42 -0000 1.270 +++ src/file-manager/fm-list-view.c 22 Jun 2006 20:08:47 -0000 @@ -1044,26 +1044,28 @@ get_file_for_path_callback (NautilusTree /* Handles an URL received from Mozilla */ static void list_view_handle_url (NautilusTreeViewDragDest *dest, const char *encoded_url, - GdkDragAction action, int x, int y, FMListView *view) + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view), - encoded_url, action, x, y); + encoded_url, target_uri, action, x, y); } static void list_view_handle_uri_list (NautilusTreeViewDragDest *dest, const char *item_uris, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_uri_list_drop (FM_DIRECTORY_VIEW (view), - item_uris, action, x, y); + item_uris, target_uri, action, x, y); } static void list_view_handle_text (NautilusTreeViewDragDest *dest, const char *text, + const char *target_uri, GdkDragAction action, int x, int y, FMListView *view) { fm_directory_view_handle_text_drop (FM_DIRECTORY_VIEW (view), - text, action, x, y); + text, target_uri, action, x, y); } static void --=-wko5hNaIXKFzt/OLy/jx-- From gcgn-nautilus-list@m.gmane.org Fri Jun 23 20:50:10 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 1A1653B016A for ; Fri, 23 Jun 2006 20:50:10 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14245-10 for ; Fri, 23 Jun 2006 20:50:09 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id D85B93B00E5 for ; Fri, 23 Jun 2006 20:50:08 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FtwLa-00040A-JD for nautilus-list@gnome.org; Sat, 24 Jun 2006 02:50:02 +0200 Received: from grenadine.bebeloup.net ([82.66.18.21]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 Received: from bdelaage by grenadine.bebeloup.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 02:50:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Boris de Laage Subject: [PATCH] nautilus-vcs: use the C locale for LC_TIME with strftime Date: Sat, 24 Jun 2006 02:46:54 +0200 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: grenadine.bebeloup.net User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.145 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, RCVD_IN_SORBS_WEB=1.456, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -1.145 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 00:50:10 -0000 strftime formats the string according to the current locale, while CVS timestamps are in english. This patch changes the LC_TIME locale before calling strftime. Boris. Index: nautilus-cvs.c =================================================================== RCS file: /cvs/gnome/nautilus-vcs/src/nautilus-cvs.c,v retrieving revision 1.8 diff -u -r1.8 nautilus-cvs.c --- nautilus-cvs.c 19 Nov 2004 18:18:19 -0000 1.8 +++ nautilus-cvs.c 6 Dec 2005 16:29:12 -0000 @@ -128,8 +128,11 @@ struct tm mtime; const GnomeVFSFileInfo *info; char timestamp[512]; + char *locale; + info = nautilus_file_info_get_vfs_file_info (file); + locale = setlocale(LC_TIME, "C"); gmtime_r (&info->mtime, &mtime); if (strftime (timestamp, 512, "%a %b %e %H:%M:%S %Y", @@ -138,6 +141,7 @@ ret = TRUE; } } + setlocale(LC_TIME, locale); } return ret; From alexgearhart@gmail.com Sat Jun 24 02:03:18 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id C39E83B01BF for ; Sat, 24 Jun 2006 02:03:18 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26437-02 for ; Sat, 24 Jun 2006 02:03:17 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by menubar.gnome.org (Postfix) with ESMTP id 7481E3B0303 for ; Sat, 24 Jun 2006 02:03:16 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so156334uge for ; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.140.17 with SMTP id n17mr1525570hud; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Received: by 10.78.31.6 with HTTP; Fri, 23 Jun 2006 23:03:15 -0700 (PDT) Message-ID: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Date: Sat, 24 Jun 2006 02:03:15 -0400 From: "Alex Gearhart" To: nautilus-list@gnome.org Subject: Folder size column MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_33481_11872762.1151128995549" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-0.91 tagged_above=-999 required=2 tests=[BAYES_05=-1.11, DNS_FROM_RFC_ABUSE=0.2, HTML_MESSAGE=0.001, SPF_PASS=-0.001] X-Spam-Score: -0.91 X-Spam-Level: X-Mailman-Approved-At: Sat, 24 Jun 2006 10:45:26 -0400 X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 06:03:19 -0000 ------=_Part_33481_11872762.1151128995549 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hey, the folder size column should display the size of the folder, and not how many files are inside. Then it would be easier to see how much space all your folders take up. Instead, the number of files inside should be in a column like "Contents." Thanks, Alex ------=_Part_33481_11872762.1151128995549 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hey, the folder size column should display the size of the folder, and not how many files are inside.   Then it would be easier to see how much space all your folders take up.  Instead, the number of files inside should be in a column like "Contents."

 

Thanks,
Alex

------=_Part_33481_11872762.1151128995549-- From gcgn-nautilus-list@m.gmane.org Sat Jun 24 13:15:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id EA1233B0385 for ; Sat, 24 Jun 2006 13:15:45 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 26732-06 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 6D41A3B0121 for ; Sat, 24 Jun 2006 13:15:44 -0400 (EDT) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1FuBio-0007D2-A1 for nautilus-list@gnome.org; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 24 Jun 2006 19:15:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: support truncated long file name? Date: Sat, 24 Jun 2006 18:08:39 +0100 Lines: 30 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:pg4guGpKutI95x3CB8skWP4y+YE= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:15:46 -0000 Dear all, A missing feature in nautilus is truncated long file name. Imagine opening a dir with a lot of long file names such as a dir containing papers that have title as the file name, which a lot academic workers will do. How messy and inconvenient that is! Lately a colleague, a first-time gnome user, has asked for help to configure his nautilus to show tidily a dir of books that he collected. Unfortunately no one could give an answer. He has then been persuaded to change to KDE. As a gnome user for 4 years, I hate to see people leave gnome this way and thus this post. In case you can't try konqueror or xp explorer, here is the feature: In konqueror or xp explorer, long file name will be truncated with ... to indicate the missing part. A popup will show the full file name when mouse is over the item. (Konqueror has this feature for over 2 years) Files in the desktop are treated differently. Full file name is shown for selected item. This feature is available in xp. Apology for my English. Thanks for your time. -- Leon From mpt@myrealbox.com Sat Jun 24 21:32:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 854743B024B for ; Sat, 24 Jun 2006 21:32:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11780-10 for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from leucothea.redline.site5.com (leucothea.redline.site5.com [216.118.97.161]) by menubar.gnome.org (Postfix) with ESMTP id 7AD453B01DD for ; Sat, 24 Jun 2006 21:31:59 -0400 (EDT) Received: from 203-173-178-53.bliink.ihug.co.nz ([203.173.178.53] helo=[10.1.1.5]) by leucothea.redline.site5.com with esmtpsa (TLSv1:RC4-SHA:128) (Exim 4.52) id 1FuJSn-0001jv-Pt; Sat, 24 Jun 2006 21:31:02 -0400 In-Reply-To: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> References: <394e53190606232303p2a13ea09tb3e9143cfa47b139@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <1e87f7c2959ea7bc5dbc264d3a1d94c0@myrealbox.com> Content-Transfer-Encoding: quoted-printable From: Matthew Paul Thomas Subject: Re: Folder size column Date: Sun, 25 Jun 2006 13:31:05 +1200 To: nautilus-list List X-Mailer: Apple Mail (2.623) X-Antivirus-Scanner: This message has been scanned by ClamAV. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leucothea.redline.site5.com X-AntiAbuse: Original Domain - gnome.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - myrealbox.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.476 tagged_above=-999 required=2 tests=[AWL=0.123, BAYES_00=-2.599] X-Spam-Score: -2.476 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 01:32:02 -0000 On Jun 24, 2006, at 6:03 PM, Alex Gearhart wrote: > > Hey, the folder size column should display the size of the folder, and=20= > not how many files are inside. =A0 Then it would be easier to see how=20= > much space all your folders take up.=A0 Instead, the number of files=20= > inside should be in a column like "Contents." > ... You can subscribe to the relevant bug report to be notified of progress=20= in fixing the bug. Cheers --=20 Matthew Paul Thomas http://mpt.net.nz/= From reinouts@gnome.org Sun Jun 25 04:59:31 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 45E3C3B02C9 for ; Sun, 25 Jun 2006 04:59:31 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 06259-07 for ; Sun, 25 Jun 2006 04:59:28 -0400 (EDT) Received: from smtp13.wxs.nl (smtp13.wxs.nl [195.121.247.4]) by menubar.gnome.org (Postfix) with ESMTP id E0E423B01C5 for ; Sun, 25 Jun 2006 04:59:27 -0400 (EDT) Received: from reinout.rotterdam-cs.com (ip5656924e.speed.planet.nl [86.86.146.78]) by smtp13.wxs.nl (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with SMTP id <0J1E00KI7RLCUO@smtp13.wxs.nl> for nautilus-list@gnome.org; Sun, 25 Jun 2006 10:58:24 +0200 (CEST) Date: Sun, 25 Jun 2006 11:01:02 +0200 From: Reinout van Schouwen Subject: Re: support truncated long file name? To: nautilus-list@gnome.org Message-id: MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) References: X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.449 tagged_above=-999 required=2 tests=[AWL=0.015, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135] X-Spam-Score: -2.449 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 08:59:31 -0000 Hi Leon, On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > Lately a colleague, a first-time gnome user, has asked for help to > configure his nautilus to show tidily a dir of books that he collected. How did the long filenames cause "untidiness" then? Was he using list view or icon view? > Unfortunately no one could give an answer. He has then been persuaded to > change to KDE. That sounds like a rigorous solution for a relatively insignificant problem, but at least he is still using Free software :-). > In konqueror or xp explorer, long file name will be truncated with ... > to indicate the missing part. A popup will show the full file name when > mouse is over the item. (Konqueror has this feature for over 2 years) Popup tooltips in the GTK tree/list widget are not possible in the current stable releases, however I think they will be part of the upcoming GTK 2.10. I agree that it would be good to use ellipsis (...) for filenames that do not fit in their column, could you file a bug about this at http://bugzilla.gnome.org/ so that the developers don't forget about it? regards, -- Reinout van Schouwen From gcgn-nautilus-list@m.gmane.org Sun Jun 25 07:19:27 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8717D3B008F for ; Sun, 25 Jun 2006 07:19:27 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 11101-06 for ; Sun, 25 Jun 2006 07:19:24 -0400 (EDT) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by menubar.gnome.org (Postfix) with ESMTP id 04FB23B00D9 for ; Sun, 25 Jun 2006 07:19:23 -0400 (EDT) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FuSda-0004qq-Et for nautilus-list@gnome.org; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 25 Jun 2006 13:18:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: nautilus-list@gnome.org From: Leon Subject: Re: support truncated long file name? Date: Sun, 25 Jun 2006 12:18:35 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:M1ThUfhXtUcoA+syhkILCbb1hws= Sender: news X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.594 tagged_above=-999 required=2 tests=[AWL=0.007, BAYES_00=-2.599, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] X-Spam-Score: -2.594 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jun 2006 11:19:27 -0000 Reinout van Schouwen writes: > Hi Leon, > > On Sat, 24 Jun 2006 18:08:39 +0100, Leon wrote: > >> Lately a colleague, a first-time gnome user, has asked for help to >> configure his nautilus to show tidily a dir of books that he collected. > > How did the long filenames cause "untidiness" then? Was he using list view > or icon view? > Icon view. Sometimes list view is not an option for example on the desktop. > >> In konqueror or xp explorer, long file name will be truncated with ... >> to indicate the missing part. A popup will show the full file name when >> mouse is over the item. (Konqueror has this feature for over 2 years) > > Popup tooltips in the GTK tree/list widget are not possible in the current > stable releases, however I think they will be part of the upcoming GTK > 2.10. I agree that it would be good to use ellipsis (...) for filenames > that do not fit in their column, could you file a bug about this at > http://bugzilla.gnome.org/ so that the developers don't forget about it? Funny story, this bug has been filed slightly more than 4 years ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 Can somebody raise the priority of the bug? As a DE values usability and simplicity this much as gnome, it will be a shame to see this bug hang around for another 4 year. > > regards, > > -- > Reinout van Schouwen -- Leon From ebassi@gmail.com Mon Jun 26 06:28:39 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 11F873B03A8 for ; Mon, 26 Jun 2006 06:28:39 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09876-02 for ; Mon, 26 Jun 2006 06:28:36 -0400 (EDT) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.170]) by menubar.gnome.org (Postfix) with ESMTP id 6146C3B030F for ; Mon, 26 Jun 2006 06:28:35 -0400 (EDT) Received: by ug-out-1314.google.com with SMTP id o2so760879uge for ; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: by 10.67.26.7 with SMTP id d7mr4811743ugj; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Received: from ?10.0.10.50? ( [147.83.156.10]) by mx.gmail.com with ESMTP id k2sm4822536ugf.2006.06.26.03.28.30; Mon, 26 Jun 2006 03:28:31 -0700 (PDT) Subject: Re: support truncated long file name? From: Emmanuele Bassi To: Leon In-Reply-To: References: Content-Type: text/plain Date: Mon, 26 Jun 2006 11:28:29 +0100 Message-Id: <1151317709.6877.2.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.4 tagged_above=-999 required=2 tests=[BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, SPF_PASS=-0.001] X-Spam-Score: -2.4 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 10:28:39 -0000 Hi; On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: > > Popup tooltips in the GTK tree/list widget are not possible in the current > > stable releases, however I think they will be part of the upcoming GTK > > 2.10. Unfortunately, no. They didn't make in time for the 2.10 schedule. > I agree that it would be good to use ellipsis (...) for filenames > > that do not fit in their column, could you file a bug about this at > > http://bugzilla.gnome.org/ so that the developers don't forget about it? > > Funny story, this bug has been filed slightly more than 4 years > ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 > > Can somebody raise the priority of the bug? The GTK developers are pretty well aware of the situation. Unfortunately, providing support for tooltips inside GtkTreeView is a tricky thing to do, and requires a major overhauling of the tooltips API. This means introducing a major change in every application using tooltips, so we need to do things right. > As a DE values usability > and simplicity this much as gnome, it will be a shame to see this bug > hang around for another 4 year. Faster work implies giving a hand with code. If you want, you can contact Kristian, which is working on this issue, and help him by writing some code yourself. Ciao, Emmanuele. -- Emmanuele Bassi, E: ebassi@gmail.com W: http://www.emmanuelebassi.net B: http://log.emmanuelebassi.net From milton.yates@resel.fr Mon Jun 26 11:20:22 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 656393B045D for ; Mon, 26 Jun 2006 11:20:22 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27783-06 for ; Mon, 26 Jun 2006 11:20:20 -0400 (EDT) Received: from smtp2-g19.free.fr (smtp2-g19.free.fr [212.27.42.28]) by menubar.gnome.org (Postfix) with ESMTP id E856A3B0135 for ; Mon, 26 Jun 2006 11:20:19 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp2-g19.free.fr (Postfix) with ESMTP id B299273276 for ; Mon, 26 Jun 2006 17:20:18 +0200 (CEST) Subject: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org Content-Type: text/plain Date: Mon, 26 Jun 2006 17:20:18 +0200 Message-Id: <1151335218.3123.16.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 15:20:22 -0000 Hi, I'm often coming across the following dialog box: "Cannot XXX. The filename "XXX" indicates that this file is of type "YYY". The contents of the file indicate that the file is of type "ZZZ". If you open this file, the file might present a security risk to your system." Often on WMV files, it says it's ASF, but it's not. Knowing that file content detection might fail, I'd like to know if there is any way to prevent Nautilus from actually doing this detection. The user should be able to deactivate it, as I can get quite annoying. Is that possible ? Thanks, Milton. From nshmyrev@yandex.ru Tue Jun 27 04:14:28 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 250FE3B0204 for ; Tue, 27 Jun 2006 04:14:28 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15482-05 for ; Tue, 27 Jun 2006 04:14:13 -0400 (EDT) Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18]) by menubar.gnome.org (Postfix) with ESMTP id 106663B02D1 for ; Tue, 27 Jun 2006 04:14:12 -0400 (EDT) Received: from ppp83-237-255-208.pppoe.mtu-net.ru ([83.237.255.208]:38893 "EHLO gnome.local" smtp-auth: "nshmyrev" TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3376165AbWF0IOK (ORCPT ); Tue, 27 Jun 2006 12:14:10 +0400 X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: nshmyrev Subject: Re: Nautilus and file format detection... From: "Nickolay V. Shmyrev" To: Milton YATES In-Reply-To: <1151335218.3123.16.camel@localhost> References: <1151335218.3123.16.camel@localhost> Content-Type: text/plain; charset=utf-8 Date: Tue, 27 Jun 2006 12:14:13 +0400 Message-Id: <1151396053.11042.5.camel@gnome.local> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-1.fc5.3) Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.315 tagged_above=-999 required=2 tests=[AWL=0.150, BAYES_00=-2.599, FORGED_RCVD_HELO=0.135, SPF_PASS=-0.001] X-Spam-Score: -2.315 X-Spam-Level: Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 08:14:28 -0000 В Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > Hi, > > I'm often coming across the following dialog box: > "Cannot XXX. > The filename "XXX" indicates that this file is of > type "YYY". The contents of the file indicate > that the file is of type "ZZZ". If you open this file, > the file might present a security risk to your system." > > Often on WMV files, it says it's ASF, but it's not. > > Knowing that file content detection might fail, I'd like to know > if there is any way to prevent Nautilus from actually doing this detection. > The user should be able to deactivate it, as I can get quite annoying. > Is that possible ? > As far as I know there is no way to disable dialog detection, but the problem with this known "dialog of doom" was solved long time ago. Probably, upgrade will help you with your problems. From milton.yates@resel.fr Tue Jun 27 13:47:02 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 8740F3B01EE for ; Tue, 27 Jun 2006 13:47:02 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 10834-05 for ; Tue, 27 Jun 2006 13:47:01 -0400 (EDT) Received: from smtp6-g19.free.fr (smtp6-g19.free.fr [212.27.42.36]) by menubar.gnome.org (Postfix) with ESMTP id E0B2B3B0163 for ; Tue, 27 Jun 2006 13:47:00 -0400 (EDT) Received: from crj95-5-82-243-61-139.fbx.proxad.net (crj95-5-82-243-61-139.fbx.proxad.net [82.243.61.139]) by smtp6-g19.free.fr (Postfix) with ESMTP id E8A1418719 for ; Tue, 27 Jun 2006 19:46:27 +0200 (CEST) Subject: Re: Nautilus and file format detection... From: Milton YATES To: nautilus-list@gnome.org In-Reply-To: <1151396053.11042.5.camel@gnome.local> References: <1151335218.3123.16.camel@localhost> <1151396053.11042.5.camel@gnome.local> Content-Type: text/plain; charset=UTF-8 Date: Tue, 27 Jun 2006 19:46:21 +0200 Message-Id: <1151430381.16816.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.599 tagged_above=-999 required=2 tests=[AWL=0.000, BAYES_00=-2.599] X-Spam-Score: -2.599 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 17:47:02 -0000 Le mardi 27 juin 2006 à 12:14 +0400, Nickolay V. Shmyrev a écrit : > В Пнд, 26/06/2006 в 17:20 +0200, Milton YATES пишет: > > I'm often coming across the following dialog box: > > "Cannot XXX. > > The filename "XXX" indicates that this file is of > > type "YYY". The contents of the file indicate > > that the file is of type "ZZZ". If you open this file, > > the file might present a security risk to your system." > > > > Often on WMV files, it says it's ASF, but it's not. > As far as I know there is no way to disable dialog detection, but the > problem with this known "dialog of doom" was solved long time ago. > Probably, upgrade will help you with your problems. I use nautilus 2.12.2 in a gnome 2.12.3. This almost only happens on WMV files which are detected as ASF. From kristoffer.lunden@gmail.com Tue Jun 27 15:16:34 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 2F2113B02A8 for ; Tue, 27 Jun 2006 15:16:34 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14131-01 for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: from nz-out-0102.google.com (nz-out-0102.google.com [64.233.162.204]) by menubar.gnome.org (Postfix) with ESMTP id 8C3C63B03AC for ; Tue, 27 Jun 2006 15:16:32 -0400 (EDT) Received: by nz-out-0102.google.com with SMTP id i1so2361752nzh for ; Tue, 27 Jun 2006 12:16:03 -0700 (PDT) Received: by 10.36.178.19 with SMTP id a19mr1156199nzf; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Received: by 10.36.132.19 with HTTP; Tue, 27 Jun 2006 12:16:02 -0700 (PDT) Message-ID: Date: Tue, 27 Jun 2006 21:16:02 +0200 From: "=?UTF-8?Q?Kristoffer_Lund=C3=A9n?=" To: "nautilus-list@gnome.org" Subject: Possible to recognize a dropped ISO into the creator? MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_9323_19651519.1151435762818" X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-1.45 tagged_above=-999 required=2 tests=[AWL=-0.626, BAYES_00=-2.599, DNS_FROM_RFC_ABUSE=0.2, HTML_10_20=1.351, HTML_MESSAGE=0.001, MIME_BASE64_NO_NAME=0.224, SPF_PASS=-0.001] X-Spam-Score: -1.45 X-Spam-Level: X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 19:16:34 -0000 ------=_Part_9323_19651519.1151435762818 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sCgpqdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQgaXQgYWdh aW4uIDopCgpJIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlrZSB0byBidXJuLiBJ IGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwCnBvcHMgYSBxdWVzdGlvbiBpZiBJIHdhbnQgdG8g aWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3IKYnVybmluZyBhbiBJ U08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJlIHByZXNlbnQgdG9v LCBvcgp3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29nbml6ZSB0aGF0IGFu IElTTyBpcyBiZWluZyBkcm9wcGVkCmFuZCBhc2sgaWYgSSB3YW50IHRvIG1ha2UgYW4gSVNPIG9y IGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KCkFwcGFyZW50bHkgTmF1dGlsdXMga25v d3MgaXQncyBhbiBJU086IGFzIGl0IGlzIG5vdywgSSBoYXZlIHRvIGdvIHRvIHRoZQpJU08sIHJp Z2h0LWNsaWNrIGFuZCBjaG9vc2UgdG8gYnVybiBpdCBmcm9tIHRoZXJlLiBJJ2QgcmF0aGVyIGhh dmUgaXQgbW9yZQp1bmlmaWVkLCBhcyB0aGUgcXVlc3Rpb24gaXMgYXNrZWQgYW55d2F5cyB3aGVu IEkgcHV0IHRoZSBDRCBpbi4KCi0tIEtyaXN0b2ZmZXIKCi0tIApLcmlzdG9mZmVyIEx1bmTDqW4K 4pyJIGtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbQrinIkga3Jpc3RvZmZlci5sdW5kZW5AZ2Ft ZW1ha2VyLm51Cmh0dHA6Ly93d3cuZ2FtZW1ha2VyLm51LwrimI4gMDcwNCA0OCA5OCA3Nwo= ------=_Part_9323_19651519.1151435762818 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8sPGJyPjxicj5qdXN0IGEgcXVpY2sgdGhvdWdodCBiZWZvcmUgSSBmb3JnZXQgYWJvdXQg aXQgYWdhaW4uIDopPGJyPjxicj5JIGhhdmUgZG93bmxvYWRlZCBhbiBJU08gdGhhdCBJJ2QgbGlr ZSB0byBidXJuLiBJIGluc2VydCB0aGUgZW1wdHkgQ0QgYW5kIHVwIHBvcHMgYSBxdWVzdGlvbiBp ZiBJIHdhbnQgdG8gaWdub3JlIGl0LCBidXJuIGF1ZGlvIG9yIGRhdGEuIE5vIGNob2ljZSBmb3Ig YnVybmluZyBhbiBJU08uIEkgdGhpbmsgdGhhdCBlaXRoZXIsIHRoYXQgY2hvaWNlIGNvdWxkIGJl IHByZXNlbnQgdG9vLCBvciB3aGVuIHRoZSBjcmVhdG9yIGlzIG9wZW4sIGl0IGNvdWxkIHJlY29n bml6ZSB0aGF0IGFuIElTTyBpcyBiZWluZyBkcm9wcGVkIGFuZCBhc2sgaWYgSSB3YW50IHRvIG1h a2UgYW4gSVNPIG9yIGJ1cm4gdGhlIGltYWdlIGFzIGRhdGEgaW5zdGVhZC4KPGJyPjxicj5BcHBh cmVudGx5IE5hdXRpbHVzIGtub3dzIGl0J3MgYW4gSVNPOiBhcyBpdCBpcyBub3csIEkgaGF2ZSB0 byBnbyB0byB0aGUgSVNPLCByaWdodC1jbGljayBhbmQgY2hvb3NlIHRvIGJ1cm4gaXQgZnJvbSB0 aGVyZS4gSSdkIHJhdGhlciBoYXZlIGl0IG1vcmUgdW5pZmllZCwgYXMgdGhlIHF1ZXN0aW9uIGlz IGFza2VkIGFueXdheXMgd2hlbiBJIHB1dCB0aGUgQ0QgaW4uPGJyPgo8YnI+LS0gS3Jpc3RvZmZl cjxicj48YnI+LS0gPGJyPktyaXN0b2ZmZXIgTHVuZMOpbjxicj7inIkgPGEgaHJlZj0ibWFpbHRv OmtyaXN0b2ZmZXIubHVuZGVuQGdtYWlsLmNvbSI+a3Jpc3RvZmZlci5sdW5kZW5AZ21haWwuY29t PC9hPjxicj7inIkgPGEgaHJlZj0ibWFpbHRvOmtyaXN0b2ZmZXIubHVuZGVuQGdhbWVtYWtlci5u dSI+a3Jpc3RvZmZlci5sdW5kZW5AZ2FtZW1ha2VyLm51PC9hPjxicj4KPGEgaHJlZj0iaHR0cDov L3d3dy5nYW1lbWFrZXIubnUvIj5odHRwOi8vd3d3LmdhbWVtYWtlci5udS88L2E+PGJyPuKYjiAw NzA0IDQ4IDk4IDc3PGJyPgo= ------=_Part_9323_19651519.1151435762818-- From sl392@hermes.cam.ac.uk Mon Jun 26 09:23:46 2006 Return-Path: X-Original-To: nautilus-list@gnome.org Delivered-To: nautilus-list@gnome.org Received: from localhost (unknown [127.0.0.1]) by menubar.gnome.org (Postfix) with ESMTP id 30A753B017B for ; Mon, 26 Jun 2006 09:23:46 -0400 (EDT) Received: from menubar.gnome.org ([127.0.0.1]) by localhost (menubar.gnome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20605-04 for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) Received: from ppsw-9.csi.cam.ac.uk (ppsw-9.csi.cam.ac.uk [131.111.8.139]) by menubar.gnome.org (Postfix) with ESMTP id 231A23B035F for ; Mon, 26 Jun 2006 09:23:44 -0400 (EDT) X-Cam-SpamDetails: Not scanned X-Cam-AntiVirus: No virus found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]:51862) by ppsw-9.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:587) with esmtpsa (LOGIN:sl392) (TLSv1:DHE-RSA-AES256-SHA:256) id 1Fur3z-0007uC-Uw (Exim 4.54) (return-path ); Mon, 26 Jun 2006 14:23:39 +0100 To: Emmanuele Bassi Subject: Re: support truncated long file name? References: <1151317709.6877.2.camel@localhost> From: Leon Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUfIB4qLCk8PjxAQT9E RkNHSUZKS0lOUE1SVFFWV1VWWFVaW1lcXltfYV5kZWNpa2hsbmtub21vcW5ydHF3eXZ5e3h7fXp+ f32Agn+EhoOGiIWKjImNjouTlZKWmJWZm5icnpugop+jpaKnqaarraqwsq6ztbG4ure7vbq+wL3D xcLJy8jP0c3R09DT1dLV19TY2tfe4Nzf4d7h5ODj5eLn6ebq7Ont7+vv8e3y9PHz9fL19/T3+fb4 +/f8/vv+//wkcdDPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gIaAyMPYYdloAAAAZlJ REFUOMudVH9TgkAQxWhqGBrqSueSQM2QUgQERxKBt9//W3V3IJKZf7A33I+927ePtxwaESWrveip oD6mEW3m4LkYbr77AWAXZ/NFaDkD+3Hfi8H7IjR8PS90fPI+ALEF6JkRFrd4m10/nH1fAvBmlAxR OEx7+cCV6O10OnQuAODgfE4qACVvw7dVPaylhbVPnMDmnNFWiSiNRDult1M1+APbtses9Yf+b4Yz 7rxKEUlGdzcwTuqceiqyhq07k6eqQplcm8Bzpv15qSo/8DjP5XRlEXktM49L3AlTJjgWJtE40Cjw O7YnvLOhbjEWSwr3URSLeDwlhDK3DtKnCAh8lA8Evm40aE0tx6mciWloeKgFlI8pfe4Lk00wgFGQ WWro6t7oXWsgY1ithuo2vCmGSiSmEWNLqgHc1E1oXR0B5llbORwB8okddZIc91UVUHrYjWCeKLSl 79D6Ss/i630FkE6WLvPvgvOC/ALAn88UzWUi3BXgHyv3+kXAv7eRdgbIKHm07QkAjMJpAL6Mev6R BMJOFrpEH4AfGukf4kwTGH0AAAAASUVORK5CYII= Date: Mon, 26 Jun 2006 14:23:38 +0100 In-Reply-To: <1151317709.6877.2.camel@localhost> (Emmanuele Bassi's message of "Mon, 26 Jun 2006 11:28:29 +0100") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Shidai (Leon) Liu X-Virus-Scanned: by amavisd-new at gnome.org X-Spam-Status: No, score=-2.593 tagged_above=-999 required=2 tests=[AWL=0.006, BAYES_00=-2.599] X-Spam-Score: -2.593 X-Spam-Level: X-Mailman-Approved-At: Thu, 29 Jun 2006 03:03:43 -0400 Cc: nautilus-list@gnome.org X-BeenThere: nautilus-list@gnome.org X-Mailman-Version: 2.1.8 Precedence: list List-Id: For developers and users of the Nautilus file manager List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 13:23:46 -0000 Emmanuele Bassi writes: > Hi; > > On Sun, 2006-06-25 at 12:18 +0100, Leon wrote: >> > Popup tooltips in the GTK tree/list widget are not possible in the current >> > stable releases, however I think they will be part of the upcoming GTK >> > 2.10. > > Unfortunately, no. They didn't make in time for the 2.10 schedule. > Can we implement this without using tooltip? For example, we can have the full file name displayed when the file is selected and truncated otherwise. Most of the time, user can recognize the file by the mimetype icon and the beginning few words of the file. >> I agree that it would be good to use ellipsis (...) for filenames >> > that do not fit in their column, could you file a bug about this at >> > http://bugzilla.gnome.org/ so that the developers don't forget about it? >> >> Funny story, this bug has been filed slightly more than 4 years >> ago. Here is the link: http://bugzilla.gnome.org/show_bug.cgi?id=84390 >> >> Can somebody raise the priority of the bug? > > The GTK developers are pretty well aware of the situation. > Unfortunately, providing support for tooltips inside GtkTreeView is a > tricky thing to do, and requires a major overhauling of the tooltips > API. This means introducing a major change in every application using > tooltips, so we need to do things right. Now I see it is fundamentally difficult to implement the tooptip methods:) > >> As a DE values usability >> and simplicity this much as gnome, it will be a shame to see this bug >> hang around for another 4 year. > > Faster work implies giving a hand with code. If you want, you can > contact Kristian, which is working on this issue, and help him by > writing some code yourself. > > Ciao, > Emmanuele. Thanks Emmanuele. Unfortunately, I'm not trained in programming. Implementing this without tooltip seems feasible. -- Leon