1
1

1999-08-09 Federico Mena Quintero <federico@nuclecu.unam.mx>

* gscreen.c (editing_icon_list): New function to figure out
	whether an icon in the icon list is being edited.  This is a
	FANTASTICALLY UGLY HACK, but we cannot add new functions to the
	icon list at this point as it would break forwards compatibility.
	Sigh.  BUGFIX: GNOME bug tracker #382, #1065.

	* glayout.c (gnome_panel_desktop_menu): Added some underline
	accelerators.

	* gdesktop.c (desktop_arrange_icons_items): Renamed to the desktop
	namespace.  Added underline accelerators.
	(handle_arrange_icons_name): Made static.
	(handle_arrange_icons_type): Likewise.
	(handle_arrange_icons_size): Likewise.
	(handle_arrange_icons_access): Likewise.
	(handle_arrange_icons_mod): Likewise.
	(handle_arrange_icons_change): Likewise.
	(desktop_arrange_icons): Made static.
	(strip_tearoff_menu_item): Made it return the number of items in
	the menu, not the list of children.
	(desktop_icon_info_destroy): Remove the icon from the icon hash
	table.
	(text_changed): Update the icon hash table information.

	* gdesktop.h: Cleaned up some unused prototypes.

	* gview.c (view_status): Use the correct g_snprintf() format
	argument.

	* gcmd.c (sort_get_func_from_type): Indented according to the MC
	conventions.  People, *PLEASE* follow the Gnome Programming
	Guidelines, especially when modifying existing code.

	* gdesktop.c (swap): Likewise.
	(auto_pos): Likewise.
	(get_icon_auto_pos): Likewise.
Этот коммит содержится в:
Miguel de Icaza 1999-08-09 22:54:02 +00:00
родитель be51568dc6
Коммит d8e892cb48
10 изменённых файлов: 391 добавлений и 270 удалений

9
BUGS
Просмотреть файл

@ -1,7 +1,7 @@
Bugzilla: 3436 Bugzilla: 3436
bugs.gnome.org: bugs.gnome.org:
Important: 382, 1006, 1035/1412/1416, 1414, 1549, 1796 Important: 1006, 1035/1412/1416, 1414, 1549, 1796
Major cosmetic: 272/875, 487, 825, 845, 1845, 899, 923, 1072/1336, Major cosmetic: 272/875, 487, 825, 845, 1845, 899, 923, 1072/1336,
1299, 1415, 1457, 1545, 1559, 1582, 1656, 1758, 1789 1299, 1415, 1457, 1545, 1559, 1582, 1656, 1758, 1789
Minor cosmetic: 55/208, 115, 308, 383, 398, 449, 479, 597, 781, Minor cosmetic: 55/208, 115, 308, 383, 398, 449, 479, 597, 781,
@ -10,13 +10,6 @@ bugs.gnome.org:
Non-essential or feature: 779?, 448, 1133, 1121, 1122, 1251 Non-essential or feature: 779?, 448, 1133, 1121, 1122, 1251
Look at bug yourself: 1613, 1458, 1773 Look at bug yourself: 1613, 1458, 1773
382: Steps to reproduce: Start editing a file label.
Drag as if to select part of the label
text.
gmc will fall over very soon afterwards.
(e.g. if you try to select the same icon
once or twice)
1006: Try going to 'ftp://ftp.cs.cuc.edu/' and then clicking on the 1006: Try going to 'ftp://ftp.cs.cuc.edu/' and then clicking on the
root window. I think the pointer grab stays around or root window. I think the pointer grab stays around or
something. something.

Просмотреть файл

@ -1,3 +1,42 @@
1999-08-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gscreen.c (editing_icon_list): New function to figure out
whether an icon in the icon list is being edited. This is a
FANTASTICALLY UGLY HACK, but we cannot add new functions to the
icon list at this point as it would break forwards compatibility.
Sigh. BUGFIX: GNOME bug tracker #382, #1065.
* glayout.c (gnome_panel_desktop_menu): Added some underline
accelerators.
* gdesktop.c (desktop_arrange_icons_items): Renamed to the desktop
namespace. Added underline accelerators.
(handle_arrange_icons_name): Made static.
(handle_arrange_icons_type): Likewise.
(handle_arrange_icons_size): Likewise.
(handle_arrange_icons_access): Likewise.
(handle_arrange_icons_mod): Likewise.
(handle_arrange_icons_change): Likewise.
(desktop_arrange_icons): Made static.
(strip_tearoff_menu_item): Made it return the number of items in
the menu, not the list of children.
(desktop_icon_info_destroy): Remove the icon from the icon hash
table.
(text_changed): Update the icon hash table information.
* gdesktop.h: Cleaned up some unused prototypes.
* gview.c (view_status): Use the correct g_snprintf() format
argument.
* gcmd.c (sort_get_func_from_type): Indented according to the MC
conventions. People, *PLEASE* follow the Gnome Programming
Guidelines, especially when modifying existing code.
* gdesktop.c (swap): Likewise.
(auto_pos): Likewise.
(get_icon_auto_pos): Likewise.
1999-08-08 Richard Hestilow <hestgray@ionet.net> 1999-08-08 Richard Hestilow <hestgray@ionet.net>
* gcmd.[ch] * gcmd.[ch]
@ -9,13 +48,13 @@
there are now 3 options (Right to Left, Bottom to Top, Rows instead there are now 3 options (Right to Left, Bottom to Top, Rows instead
of Columns) controlling layout positioning. (Located in the "Desktop" of Columns) controlling layout positioning. (Located in the "Desktop"
Preferences tab) Preferences tab)
1999-08-08 David Martin <dmartina@usa.net> 1999-08-08 David Martin <dmartina@usa.net>
* gaction.c (mainly gmc_unable_to_execute_dlg): Moved g_strconcat * gaction.c (mainly gmc_unable_to_execute_dlg): Moved g_strconcat
to g_strdup_printf, to get compact strings and make coherent to g_strdup_printf, to get compact strings and make coherent
translations. Translate atomic actions (open, edit, view) when translations. Translate atomic actions (open, edit, view) when
calling this function. calling this function.
1999-08-06 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-08-06 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -27,10 +66,10 @@
1999-08-06 Norbert Warmuth <nwarmuth@privat.circular.de> 1999-08-06 Norbert Warmuth <nwarmuth@privat.circular.de>
* gconf.h (PORT_STATIC_IN_STRING_FILE_XTIME): new port specific * gconf.h (PORT_STATIC_IN_STRING_FILE_XTIME): new port specific
feature. The Gnome edition first calls all string_file functions feature. The Gnome edition first calls all string_file functions
and then uses the return values of these functions. This needs and then uses the return values of these functions. This needs
some static buffers in string_file_[acm]time. Therefore additional some static buffers in string_file_[acm]time. Therefore additional
static buffers in string_file_[acm]time are needed. static buffers in string_file_[acm]time are needed.
1999-08-05 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-08-05 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -50,7 +89,7 @@
1999-08-01 David Martin <dmartina@usa.net> 1999-08-01 David Martin <dmartina@usa.net>
* gcmd.c (gnome_about_cmd): Change strings in gmc "about" to * gcmd.c (gnome_about_cmd): Change strings in gmc "about" to
static as they only translated once. static as they only translated once.
1999-08-01 <jrb@redhat.com> 1999-08-01 <jrb@redhat.com>
@ -66,7 +105,7 @@
* gnome-file-property-dialog.c (perm_group_new): the return values * gnome-file-property-dialog.c (perm_group_new): the return values
from the group functions in libc return pointers to static buffers from the group functions in libc return pointers to static buffers
in the library. Duplicate all return values and free them at the in the library. Duplicate all return values and free them at the
end. end.
1999-07-12 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-07-12 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -95,8 +134,8 @@
1999-06-24 Norbert Warmuth <nwarmuth@privat.circular.de> 1999-06-24 Norbert Warmuth <nwarmuth@privat.circular.de>
* gmc-chargrid.c (update_strip): Paint every character with the * gmc-chargrid.c (update_strip): Paint every character with the
assigned fore and background color instead of using the colors of assigned fore and background color instead of using the colors of
the first character for the whole line. the first character for the whole line.
1999-06-22 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-06-22 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -110,7 +149,7 @@
* gmain.c (non_corba_create_panels): Use parameter for startup * gmain.c (non_corba_create_panels): Use parameter for startup
directory (use the this_dir external directory for this). directory (use the this_dir external directory for this).
(create_panels): Pass this_dsir to non_corba_create_panels and (create_panels): Pass this_dsir to non_corba_create_panels and
corba_create_window. corba_create_window.
1999-06-22 David Martin <dmartina@usa.net> 1999-06-22 David Martin <dmartina@usa.net>
@ -186,7 +225,7 @@
1999-06-01 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-06-01 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdesktop-icon.c (desktop_icon_select): Show the * gdesktop-icon.c (desktop_icon_select): Show the
dicon->background. dicon->background.
(desktop_icon_init): Initialize backgorund as a rectangle that (desktop_icon_init): Initialize backgorund as a rectangle that
fills all of the space used by the icon. fills all of the space used by the icon.
@ -194,7 +233,7 @@
* glayout.c (gnome_panel_about_menu): Hooked up the new help * glayout.c (gnome_panel_about_menu): Hooked up the new help
file in the menu. file in the menu.
1999-05-29 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-05-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gprefs.c (create_prop_int): Translate this label too. * gprefs.c (create_prop_int): Translate this label too.
@ -206,11 +245,11 @@
1999-05-27 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-05-27 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gscreen.c (panel_tree_button_press): Beginning of context menu * gscreen.c (panel_tree_button_press): Beginning of context menu
on tree. on tree.
* gtkdtree.c (gtk_dtree_load_path): Comment out the phantom code. * gtkdtree.c (gtk_dtree_load_path): Comment out the phantom code.
Need to review this code. Lets fix the problem Federico needs Need to review this code. Lets fix the problem Federico needs
solved now. solved now.
1999-05-26 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-05-26 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -289,7 +328,7 @@
1999-04-16 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-04-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
* mc.keys.in.in: Merge the application/tex values. * mc.keys.in.in: Merge the application/tex values.
1999-04-18 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-04-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -361,7 +400,7 @@
1999-04-12 Tuomas Kuosmanen <tigert@gimp.org> 1999-04-12 Tuomas Kuosmanen <tigert@gimp.org>
* glayout.c: Changed the stock icon for File->Delete to * glayout.c: Changed the stock icon for File->Delete to
GNOME_STOCK_PIXMAP_TRASH (the trashcan) GNOME_STOCK_PIXMAP_TRASH (the trashcan)
1999-04-09 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-04-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -378,7 +417,7 @@
1999-04-09 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-04-09 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gmount.c (is_block_device_mountable): Allow root to mount * gmount.c (is_block_device_mountable): Allow root to mount
devices. devices.
1999-04-09 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-04-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -420,7 +459,7 @@
1999-04-08 Jonathan Blandford <jrb@redhat.com> 1999-04-08 Jonathan Blandford <jrb@redhat.com>
* gaction.c (gmc_unable_to_execute_dlg): * gaction.c (gmc_unable_to_execute_dlg):
now actions do the right thing (TM). now actions do the right thing (TM).
1999-04-07 Owen Taylor <otaylor@redhat.com> 1999-04-07 Owen Taylor <otaylor@redhat.com>
@ -430,7 +469,7 @@
1999-04-06 Jonathan Blandford <jrb@redhat.com> 1999-04-06 Jonathan Blandford <jrb@redhat.com>
* gscreen.c: make sure that we bring up an open_with if * gscreen.c: make sure that we bring up an open_with if
open it. open it.
* gcmd.c (gnome_select): new selection dialog. * gcmd.c (gnome_select): new selection dialog.
@ -451,7 +490,7 @@
1999-04-06 David Martin <dmartina@usa.net> 1999-04-06 David Martin <dmartina@usa.net>
* gcmd.c: marked message for translation. * gcmd.c: marked message for translation.
1999-04-05 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-04-05 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gmetadata.c (gmeta_del_icon_pos): New function to delete the * gmetadata.c (gmeta_del_icon_pos): New function to delete the
@ -609,7 +648,7 @@
* gdesktop-init.c (desktop_load_init_from): New file that loads * gdesktop-init.c (desktop_load_init_from): New file that loads
new configuration files from the installation directory. new configuration files from the installation directory.
* gdesktop.c: Drop all the reload code from there, put it above. * gdesktop.c: Drop all the reload code from there, put it above.
* gpopup2.c (create_mime_actions): Attach to the menu, not the uiinfo. * gpopup2.c (create_mime_actions): Attach to the menu, not the uiinfo.
@ -630,12 +669,12 @@
Weninger <max@takefive.co.at> Weninger <max@takefive.co.at>
* gcmd.c (dentry_apply_callback): new function. * gcmd.c (dentry_apply_callback): new function.
(gnome_new_launcher): We can now create new (gnome_new_launcher): We can now create new
1999-03-19 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-03-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gpopup2.c (create_mime_actions): Free full_name, just once, not * gpopup2.c (create_mime_actions): Free full_name, just once, not
once per action. once per action.
1999-03-19 Paul Raines <raines@slac.stanford.edu> 1999-03-19 Paul Raines <raines@slac.stanford.edu>
@ -646,7 +685,7 @@
1999-03-18 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-03-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdesktop.c (desktop_icon_info_open): Fix condition. Should not * gdesktop.c (desktop_icon_info_open): Fix condition. Should not
open a new panel if it fails to mount the device. open a new panel if it fails to mount the device.
Thu Mar 18 14:59:12 1999 Timur Bakeyev <mc@bat.ru> Thu Mar 18 14:59:12 1999 Timur Bakeyev <mc@bat.ru>
@ -748,7 +787,7 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
1999-03-11 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-03-11 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gpopup2.c: Sigh. It happened again. More features killed by * gpopup2.c: Sigh. It happened again. More features killed by
the merge. the merge.
If a file does not have any metadata/mime way of viewing it, the If a file does not have any metadata/mime way of viewing it, the
viewer will always work. viewer will always work.
@ -872,7 +911,7 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
panel, always allow edition of the icon image. panel, always allow edition of the icon image.
1999-03-10 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-03-10 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdialogs.c: Support ui->ctx to be NULL, as file.c will set this * gdialogs.c: Support ui->ctx to be NULL, as file.c will set this
to NULL for background operations. to NULL for background operations.
@ -893,7 +932,7 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
* gmain.c (session_save_state): Add call to gnome_config_sync(). * gmain.c (session_save_state): Add call to gnome_config_sync().
* gutil.c (my_system_get_child_pid): reset SIGPIPE to a sensible * gutil.c (my_system_get_child_pid): reset SIGPIPE to a sensible
value. value.
(my_system_get_child_pid): Close also stdin/stdout/stderr (my_system_get_child_pid): Close also stdin/stdout/stderr
* gdesktop.c (is_mountable): Allow user-nfs devices to be mounted * gdesktop.c (is_mountable): Allow user-nfs devices to be mounted
@ -940,10 +979,10 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
So, no need to kill the tearoff menus in gmc now. So, no need to kill the tearoff menus in gmc now.
* gmount.c (is_block_device_mountable): compare the device name * gmount.c (is_block_device_mountable): compare the device name
here. here.
(get_mountable_devices): Do not stop scanning devices. (get_mountable_devices): Do not stop scanning devices.
* gview.c (scrollbar_moved): Call view update here, with * gview.c (scrollbar_moved): Call view update here, with
update_gui = FALSE. update_gui = FALSE.
@ -978,11 +1017,11 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
1999-02-24 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-02-24 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gmount.c (desktop_cleanup_devices): Export this routine now and * gmount.c (desktop_cleanup_devices): Export this routine now and
call it from gdeskop instead of overloading gmount_setup_devices. call it from gdeskop instead of overloading gmount_setup_devices.
* gprint.c: Sample file, it uses an externally provided program * gprint.c: Sample file, it uses an externally provided program
(not in 1.0 so far) to setup printer devices. (not in 1.0 so far) to setup printer devices.
* gmount.c (gmount_setup_devices): No longer cleans up here. * gmount.c (gmount_setup_devices): No longer cleans up here.
* gicon.c (gicon_get_filename_for_icon): Return const char *, this * gicon.c (gicon_get_filename_for_icon): Return const char *, this
@ -992,14 +1031,14 @@ Mon Mar 15 17:09:37 1999 Gregory McLean <gregm@comstar.net>
* gnome-file-property-dialog.c (apply_metadata_change): Always set * gnome-file-property-dialog.c (apply_metadata_change): Always set
the name of the icon to the new value, as the entry will always the name of the icon to the new value, as the entry will always
match the imlib image anyways (due to the fixes I did to const match the imlib image anyways (due to the fixes I did to const
correctness). correctness).
(generate_icon_sel): Do not free the value. We do not own this (generate_icon_sel): Do not free the value. We do not own this
return value. return value.
* gdesktop.c (is_mountable): NULL terminate string returned from * gdesktop.c (is_mountable): NULL terminate string returned from
readlink. Yes guys, readlink does not NULL terminate things. readlink. Yes guys, readlink does not NULL terminate things.
(do_mount_umount): ditto. (do_mount_umount): ditto.
* gnome-file-property-dialog.c (init_metadata): ditto * gnome-file-property-dialog.c (init_metadata): ditto
Tue Feb 23 17:41:45 1999 George Lebl <jirka@5z.com> Tue Feb 23 17:41:45 1999 George Lebl <jirka@5z.com>
@ -1028,7 +1067,7 @@ Tue Feb 23 17:41:45 1999 George Lebl <jirka@5z.com>
* gwidget.c (x_create_input): Hook to the changed signal and sync * gwidget.c (x_create_input): Hook to the changed signal and sync
the input with our view of the entry. This fixes the paste bug the input with our view of the entry. This fixes the paste bug
reported. reported.
Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com> Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com>
@ -1140,25 +1179,25 @@ Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com>
* gdesktop.c (reload_desktop_icons): Load the information provided * gdesktop.c (reload_desktop_icons): Load the information provided
on the .desktop file for the desktop icon information: icon on the .desktop file for the desktop icon information: icon
filename and text to be displayed.pwd filename and text to be displayed.pwd
* gpopup.c (create_actions): Add ejectable
* gpopup.c (create_actions): Add ejectable
* gdesktop.c (do_eject): Add eject command. * gdesktop.c (do_eject): Add eject command.
1999-02-16 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-02-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gpopup.c (create_actions): Add support for mountable icons. * gpopup.c (create_actions): Add support for mountable icons.
* gdesktop.c (try_to_mount): Add an option to automatically mount * gdesktop.c (try_to_mount): Add an option to automatically mount
links on the desktop that point to devices. links on the desktop that point to devices.
(is_mountable): Returns true if a pathname is mountable. (is_mountable): Returns true if a pathname is mountable.
* glayout.c: Add the dirsizes command here. * glayout.c: Add the dirsizes command here.
* gmount.c: New file. Implements support routines for * gmount.c: New file. Implements support routines for
mount/umount. mount/umount.
1999-02-16 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-02-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* i-symlink.png: Flipped the image around, since we are putting * i-symlink.png: Flipped the image around, since we are putting
@ -1212,7 +1251,7 @@ Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com>
command to execute (used internally). command to execute (used internally).
* gaction.c (gmc_edit_filename): Support for the GNOME editor * gaction.c (gmc_edit_filename): Support for the GNOME editor
environment properties. environment properties.
* gdesktop.c (create_desktop_dir): Support GNOME_DESKTOP_DIR * gdesktop.c (create_desktop_dir): Support GNOME_DESKTOP_DIR
variable to configure the desktop directory. variable to configure the desktop directory.
@ -1260,13 +1299,13 @@ Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com>
due to having the "file-must-exist" bit turned on. due to having the "file-must-exist" bit turned on.
* gnome-file-property-dialog.c (apply_metadata_change): Metadata * gnome-file-property-dialog.c (apply_metadata_change): Metadata
rename the file. rename the file.
Change fpd->file_name to point to the new name so that any Change fpd->file_name to point to the new name so that any
metadat changes take effect on the new name, not the old name. metadat changes take effect on the new name, not the old name.
Test return value from move_file_file. Test return value from move_file_file.
(init_metadata): Fixed typo. (init_metadata): Fixed typo.
1999-02-12 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-02-12 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -1320,7 +1359,7 @@ Tue Feb 23 01:57:22 1999 George Lebl <jirka@5z.com>
1999-02-10 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-02-10 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gaction.c (gmc_open_filename): Add support for running .desktop * gaction.c (gmc_open_filename): Add support for running .desktop
files. files.
Made const correct. Made const correct.
(gmc_view): Made const correct. (gmc_view): Made const correct.
@ -1426,11 +1465,11 @@ Sun Feb 7 05:29:17 1999 Timur Bakeyev <mc@bat.ru>
we don't need this in GNOME. Changed the order of linking - libgtkedit we don't need this in GNOME. Changed the order of linking - libgtkedit
require libgnomeui.a, so swap $(LDFLAGS) and $(EXTRALIBS). The same for require libgnomeui.a, so swap $(LDFLAGS) and $(EXTRALIBS). The same for
corba edition. corba edition.
gdnd.c, gmetadata.c, gpopup2.c, gtools.c: Adde #include "global.h" or gdnd.c, gmetadata.c, gpopup2.c, gtools.c: Adde #include "global.h" or
move it before #include <gnome.h> to avoid warnings about redefining move it before #include <gnome.h> to avoid warnings about redefining
MIN, MAX nad RE_DUP_MAX. More clean compiling. MIN, MAX nad RE_DUP_MAX. More clean compiling.
* gpopup2.h: New file - to avoid errors during "make distcheck". What * gpopup2.h: New file - to avoid errors during "make distcheck". What
it is for, really? it is for, really?
@ -1503,8 +1542,8 @@ Sun Feb 7 05:29:17 1999 Timur Bakeyev <mc@bat.ru>
(gicon_init): Load the url image. (gicon_init): Load the url image.
* gdesktop.c (desktop_icon_info_new): Use an URL image for * gdesktop.c (desktop_icon_info_new): Use an URL image for
desktop-urls. Use the url as the caption for those icons. desktop-urls. Use the url as the caption for those icons.
1999-02-04 Jonathan Blandford <jrb@redhat.com> 1999-02-04 Jonathan Blandford <jrb@redhat.com>
* gprefs.c (caching_and_optimization_props): wording changes * gprefs.c (caching_and_optimization_props): wording changes
@ -1513,7 +1552,7 @@ Sun Feb 7 05:29:17 1999 Timur Bakeyev <mc@bat.ru>
* gdesktop.c (desktop_icon_info_open): Run "execute" if the file * gdesktop.c (desktop_icon_info_open): Run "execute" if the file
is an executable. I forgot that gmc_open does not test for is an executable. I forgot that gmc_open does not test for
executable-ness. executable-ness.
1999-02-04 Jonathan Blandford <jrb@redhat.com> 1999-02-04 Jonathan Blandford <jrb@redhat.com>
@ -1540,7 +1579,7 @@ Sun Feb 7 05:29:17 1999 Timur Bakeyev <mc@bat.ru>
the type column be displayed. the type column be displayed.
(panel_file_list_select_row): Removed dead code. (panel_file_list_select_row): Removed dead code.
(panel_file_list_press_row): Select the row before calling (panel_file_list_press_row): Select the row before calling
gpopup_do_popup. gpopup_do_popup.
1999-02-03 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-02-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -1593,7 +1632,7 @@ Sun Feb 7 05:29:17 1999 Timur Bakeyev <mc@bat.ru>
* gnome-file-property-dialog.c (icon_sel_callback): Fix the * gnome-file-property-dialog.c (icon_sel_callback): Fix the
conditional here. conditional here.
1999-02-01 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-02-01 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdesktop.c (desktop_drag_motion): If the user is dragging a * gdesktop.c (desktop_drag_motion): If the user is dragging a
@ -1655,7 +1694,7 @@ Sun Jan 31 19:42:47 1999 Norbert Warmuth <nwarmuth@privat.circular.de>
* gnome-file-property-dialog.h (struct _GnomeFilePropertyDialog): * gnome-file-property-dialog.h (struct _GnomeFilePropertyDialog):
Now make open field mandatory and icon selection optional. Now make open field mandatory and icon selection optional.
* gnome-file-property-dialog.c: as above * gnome-file-property-dialog.c: as above
* gpopup.c (panel_action_properties): only allow setting images if * gpopup.c (panel_action_properties): only allow setting images if
we_can_afford_the_speed. we_can_afford_the_speed.
@ -1672,9 +1711,9 @@ Sun Jan 31 19:42:47 1999 Norbert Warmuth <nwarmuth@privat.circular.de>
Thu Jan 28 02:15:48 1999 Timur Bakeyev <mc@bat.ru> Thu Jan 28 02:15:48 1999 Timur Bakeyev <mc@bat.ru>
* gdialogs.c: fixed "regexp.h" -> "eregexp.h" conversion. * gdialogs.c: fixed "regexp.h" -> "eregexp.h" conversion.
* oldnd.c: Replaced copy_strings() with g_strconcat(). * oldnd.c: Replaced copy_strings() with g_strconcat().
1999-01-26 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-01-26 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gscreen.c (panel_clist_motion): Stop the emission of the * gscreen.c (panel_clist_motion): Stop the emission of the
@ -1688,7 +1727,7 @@ Thu Jan 28 02:15:48 1999 Timur Bakeyev <mc@bat.ru>
Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru> Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* Converted memory managment to Glib - where it wasn't done. Now we * Converted memory managment to Glib - where it wasn't done. Now we
use g_new()/g_malloc()/g_strdup()/g_free() routings. copy_strings() re- use g_new()/g_malloc()/g_strdup()/g_free() routings. copy_strings() re-
placed by g_strconcat(), and sprintf() by g_snprintf(). Some other, placed by g_strconcat(), and sprintf() by g_snprintf(). Some other,
minor changes. minor changes.
@ -1719,7 +1758,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
1999-01-25 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-01-25 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gtkdtree.c (gtk_dtree_select_row): This should be also protected * gtkdtree.c (gtk_dtree_select_row): This should be also protected
against async notifications. against async notifications.
1999-01-25 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-01-25 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -1751,7 +1790,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gtkdtree.c (gtk_dtree_load_path): Keep track of when we are * gtkdtree.c (gtk_dtree_load_path): Keep track of when we are
loading the tree (and thus we do not care about async loading the tree (and thus we do not care about async
notifications to the tree state changes) and when we are done (and notifications to the tree state changes) and when we are done (and
thus, we care about the async treestore structure notifications). thus, we care about the async treestore structure notifications).
1999-01-23 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-01-23 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -1761,17 +1800,17 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
(gnome_filter_cmd): ditto. (gnome_filter_cmd): ditto.
* gdialogs.c (file_progress_query_replace_policy): Set Window's * gdialogs.c (file_progress_query_replace_policy): Set Window's
position to GTK_WIN_POS_MOUSE. position to GTK_WIN_POS_MOUSE.
(file_progress_real_query_replace): ditto. (file_progress_real_query_replace): ditto.
(file_mask_dialog): ditto. (file_mask_dialog): ditto.
* gdialogs.c: Tag the strings for localization. Remove debugging * gdialogs.c: Tag the strings for localization. Remove debugging
messages. messages.
* gmain.c (gmc_window_setup_from_panel): Helper routine used to * gmain.c (gmc_window_setup_from_panel): Helper routine used to
set the GTK_WIN_POS_MOUSE on a window and set the parent with set the GTK_WIN_POS_MOUSE on a window and set the parent with
gnome_dialog_set_parent (iff you have the WPanel * pointer to the gnome_dialog_set_parent (iff you have the WPanel * pointer to the
parent). parent).
* gtools.c (query_dialog): Set the window position to GTK_WIN_POS_MOUSE. * gtools.c (query_dialog): Set the window position to GTK_WIN_POS_MOUSE.
@ -1874,7 +1913,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gicon.h (gicon_image_to_name): Added prototype for * gicon.h (gicon_image_to_name): Added prototype for
gicon_image_to_name(). gicon_image_to_name().
* gicon.c (gicon_get_icon_for_file): * gicon.c (gicon_get_icon_for_file):
(gicon_get_icon_for_file_speed): Added a "directory" argument. (gicon_get_icon_for_file_speed): Added a "directory" argument.
It is needed because the file_entry structure only contains the It is needed because the file_entry structure only contains the
pruned filename, and we need the complete name for the metadata pruned filename, and we need the complete name for the metadata
@ -1999,10 +2038,10 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
register themselves with it. register themselves with it.
1999-01-13 bertrand <Bertrand.Guiheneuf@inria.fr> 1999-01-13 bertrand <Bertrand.Guiheneuf@inria.fr>
* gdialogs.c * gdialogs.c
* gwidget.c: * gwidget.c:
* gprop.c: * gprop.c:
s/gtk_toggle_button_state/gtk_toggle_button_active s/gtk_toggle_button_state/gtk_toggle_button_active
1999-01-12 Federico Mena Quintero <federico@nuclecu.unam.mx> 1999-01-12 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -2038,7 +2077,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
command. Add Mkdir command. Use standard key definitions. command. Add Mkdir command. Use standard key definitions.
* gview.c: Use new standard keybindings * gview.c: Use new standard keybindings
* gtkdtree.c: Now it uses the treestore code. * gtkdtree.c: Now it uses the treestore code.
* treestore.c: New file format which includes the scan status of * treestore.c: New file format which includes the scan status of
@ -2079,12 +2118,12 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gscreen.c (panel_icon_list_select_icon): Remove debugging message. * gscreen.c (panel_icon_list_select_icon): Remove debugging message.
* glayout.c: Add a create directory option. * glayout.c: Add a create directory option.
1999-01-07 Jonathan Blandford <jrb@redhat.com> 1999-01-07 Jonathan Blandford <jrb@redhat.com>
* gcmd.c (gnome_filter_cmd): now it works! It's even sorta * gcmd.c (gnome_filter_cmd): now it works! It's even sorta
useful. I'm so psyched... (: useful. I'm so psyched... (:
1999-01-07 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-01-07 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -2138,7 +2177,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
1999-01-05 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-01-05 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdesktop.c (desktop_icon_drop_uri_list): Implement * gdesktop.c (desktop_icon_drop_uri_list): Implement
drops-on-executable. drops-on-executable.
* gmetadata.c, gaction.c, gdesktop.c, gicon.c: Use g_free instead * gmetadata.c, gaction.c, gdesktop.c, gicon.c: Use g_free instead
of free to follow the convention in gnome-metadata.c of free to follow the convention in gnome-metadata.c
@ -2146,11 +2185,11 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gtools.c (query_dialog): Fix the new version of this. It was * gtools.c (query_dialog): Fix the new version of this. It was
overwriting memory all over. overwriting memory all over.
* gdialogs.c (): Use GNOME stock; Fill in some FIXME strings. * gdialogs.c (): Use GNOME stock; Fill in some FIXME strings.
(file_progress_real_query_replace): Use the formatted (file_progress_real_query_replace): Use the formatted
message. message.
Change the inlined N_( for _( in various places. Change the inlined N_( for _( in various places.
(cancel_cb): Cancel button now cancels a copy or move operation. (cancel_cb): Cancel button now cancels a copy or move operation.
* gtools.c (query_dialog): Remove the hotkey indicator in the * gtools.c (query_dialog): Remove the hotkey indicator in the
@ -2191,13 +2230,13 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
calling a routine that somehow got dropped during some recent calling a routine that somehow got dropped during some recent
changes). changes).
* gtools.c (query_dialog): Simplified. * gtools.c (query_dialog): Simplified.
1999-01-02 Jonathan Blandford <jrb@redhat.com> 1999-01-02 Jonathan Blandford <jrb@redhat.com>
* gcmd.c (gnome_sort_cmd): pretified * gcmd.c (gnome_sort_cmd): pretified
(gnome_select_all_cmd): New command -- selects all files (in (gnome_select_all_cmd): New command -- selects all files (in
theory). theory).
* glayout.c: rearrange the edit menu some. * glayout.c: rearrange the edit menu some.
@ -2222,10 +2261,10 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gwidget.c (x_create_listbox): Temporary hack * gwidget.c (x_create_listbox): Temporary hack
* gmetadata.c (gmeta_get_icon_pos): Fixed the memory leak here. * gmetadata.c (gmeta_get_icon_pos): Fixed the memory leak here.
* gicon.c (gicon_get_icon_for_file): Actually return a value * gicon.c (gicon_get_icon_for_file): Actually return a value
here. here.
1999-01-01 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-01-01 Miguel de Icaza <miguel@nuclecu.unam.mx>
@ -2266,7 +2305,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gmain.c (create_panels): Register corba server here. * gmain.c (create_panels): Register corba server here.
* gcorba.c: Fix a servant declaration to point to the correct * gcorba.c: Fix a servant declaration to point to the correct
vepv. vepv.
1998-12-30 Federico Mena Quintero <federico@nuclecu.unam.mx> 1998-12-30 Federico Mena Quintero <federico@nuclecu.unam.mx>
@ -2291,7 +2330,7 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
1998-12-29 Miguel de Icaza <miguel@nuclecu.unam.mx> 1998-12-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdesktop.c (desktop_icon_delete): New function, used for * gdesktop.c (desktop_icon_delete): New function, used for
dicon_delete. dicon_delete.
(load_desktop_icons): Implemented the incremental reloading of (load_desktop_icons): Implemented the incremental reloading of
desktop icons. This should make the code much nicer. desktop icons. This should make the code much nicer.
(reload_desktop_icons): Call x_flush_events to force a display at (reload_desktop_icons): Call x_flush_events to force a display at
@ -2299,17 +2338,17 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* gpopup.c (dicon_delete): Implement this operation. * gpopup.c (dicon_delete): Implement this operation.
(desktop_icon_execute): Use the existing implementation for (desktop_icon_execute): Use the existing implementation for
launching desktop icons instead of a new hacked up version launching desktop icons instead of a new hacked up version
(desktop_icon_actions): Until copy/move is implemented, do not (desktop_icon_actions): Until copy/move is implemented, do not
even list them to the user. even list them to the user.
* gdesktop.c (create_desktop_dir): No trashcan setup until it * gdesktop.c (create_desktop_dir): No trashcan setup until it
works. works.
* gscren.c (panel_widget_motion): Use button 2 for dragging and * gscren.c (panel_widget_motion): Use button 2 for dragging and
asking. asking.
* gscreen.c (panel_create_file_list): Use a notebook instead of * gscreen.c (panel_create_file_list): Use a notebook instead of
the hack I was using before for switching the panel contents. the hack I was using before for switching the panel contents.
@ -2322,8 +2361,8 @@ Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
Tue Dec 29 16:55:24 1998 Norbert Warmuth <nwarmuth@privat.circular.de> Tue Dec 29 16:55:24 1998 Norbert Warmuth <nwarmuth@privat.circular.de>
* gmain.c: According to the man page the color keyword for executable * gmain.c: According to the man page the color keyword for executable
files is `executable' and not `execute' -- changed. files is `executable' and not `execute' -- changed.
1998-12-28 Jonathan Blandford <jrb@redhat.com> 1998-12-28 Jonathan Blandford <jrb@redhat.com>
@ -2346,12 +2385,12 @@ Thu Dec 24 18:38:45 1998 Norbert Warmuth <nwarmuth@privat.circular.de>
Mon Dec 21 22:33:07 1998 Norbert Warmuth <nwarmuth@privat.circular.de> Mon Dec 21 22:33:07 1998 Norbert Warmuth <nwarmuth@privat.circular.de>
* layout: Deleted obsolete widgets from the Virtual FS configuration * layout: Deleted obsolete widgets from the Virtual FS configuration
dialog. dialog.
1998-12-17 Miguel de Icaza <miguel@nuclecu.unam.mx> 1998-12-17 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gscreen.c (panel_icon_list_select_icon): Show the popup menu on * gscreen.c (panel_icon_list_select_icon): Show the popup menu on
button release here. This is what makes most sense. button release here. This is what makes most sense.
(panel_widget_motion): Drags with button 3 now produce a popup (panel_widget_motion): Drags with button 3 now produce a popup
dialog box that asks dialog box that asks
@ -2359,7 +2398,7 @@ Mon Dec 21 22:33:07 1998 Norbert Warmuth <nwarmuth@privat.circular.de>
* gdialogs.c (create_op_win): Remove second spurious packing. * gdialogs.c (create_op_win): Remove second spurious packing.
(create_op_win): OP_MOVE uses the same stuff OP_COPY does. Fix (create_op_win): OP_MOVE uses the same stuff OP_COPY does. Fix
this. this.
(file_progress_show_target): More compliant to the original (file_progress_show_target): More compliant to the original
functions. functions.
(file_progress_show_source): More compliant to the original (file_progress_show_source): More compliant to the original
@ -2371,7 +2410,7 @@ Tue Dec 15 10:51:12 1998 Gregory McLean <gregm@comstar.net>
* gdesktop-icon.c : Attach a desktop_icon wmclass to the desktop * gdesktop-icon.c : Attach a desktop_icon wmclass to the desktop
icons to allow even more wizardry with the desktop icons, mainly icons to allow even more wizardry with the desktop icons, mainly
to exclude them from window lists, don't decorate them, skip to exclude them from window lists, don't decorate them, skip
desktops and other boring stuff. desktops and other boring stuff.
1998-12-14 Sven Neumann <sven@gimp.org> 1998-12-14 Sven Neumann <sven@gimp.org>
@ -2407,7 +2446,7 @@ Tue Dec 15 10:51:12 1998 Gregory McLean <gregm@comstar.net>
* gscreen.c (panel_tree_drag_motion): Doubled timeout * gscreen.c (panel_tree_drag_motion): Doubled timeout
for autoexpand - reducing opening unwanted directories. for autoexpand - reducing opening unwanted directories.
* gscreen.c (tree_drag_open_directory): Use * gscreen.c (tree_drag_open_directory): Use
gtk_ctree_expand() not gtk_ctree_expand_recursive, gtk_ctree_expand() not gtk_ctree_expand_recursive,
which increases confusion and could be which increases confusion and could be
_vvveeerrrryyyy_ expensive. (/afs ?) _vvveeerrrryyyy_ expensive. (/afs ?)

Просмотреть файл

@ -32,9 +32,9 @@ gnome_listing_cmd (GtkWidget *widget, WPanel *panel)
{ {
int view_type, use_msformat; int view_type, use_msformat;
char *user, *status; char *user, *status;
view_type = display_box (panel, &user, &status, &use_msformat, get_current_index ()); view_type = display_box (panel, &user, &status, &use_msformat, get_current_index ());
if (view_type == -1) if (view_type == -1)
return; return;
@ -56,7 +56,7 @@ gnome_open_terminal_with_cmd (const char *command)
{ {
char *p; char *p;
int quote_all = 0; int quote_all = 0;
if (!(p = gnome_is_program_in_path ("gnome-terminal"))){ if (!(p = gnome_is_program_in_path ("gnome-terminal"))){
if (!(p = gnome_is_program_in_path ("dtterm"))) if (!(p = gnome_is_program_in_path ("dtterm")))
if (!(p = gnome_is_program_in_path ("nxterm"))) if (!(p = gnome_is_program_in_path ("nxterm")))
@ -104,12 +104,12 @@ gnome_about_cmd (void)
if (!translated){ if (!translated){
int i; int i;
for (i = 0; authors [i]; i++) for (i = 0; authors [i]; i++)
authors [i] = _(authors [i]); authors [i] = _(authors [i]);
translated = TRUE; translated = TRUE;
} }
about = gnome_about_new (_("GNU Midnight Commander"), VERSION, about = gnome_about_new (_("GNU Midnight Commander"), VERSION,
"Copyright 1994-1999 the Free Software Foundation", "Copyright 1994-1999 the Free Software Foundation",
authors, authors,
@ -237,34 +237,44 @@ sort_callback (GtkWidget *menu_item, GtkWidget *cbox1)
gtk_widget_set_sensitive (cbox1, FALSE); gtk_widget_set_sensitive (cbox1, FALSE);
} }
/* Returns a sort function based on its type */
sortfn * sortfn *
sort_get_func_from_type (SortType type) { sort_get_func_from_type (SortType type)
{
sortfn *sfn = NULL; sortfn *sfn = NULL;
switch (type) { switch (type) {
case SORT_NAME: case SORT_NAME:
sfn = (sortfn *) sort_name; sfn = (sortfn *) sort_name;
break; break;
case SORT_EXTENSION:
sfn = (sortfn *) sort_ext; case SORT_EXTENSION:
break; sfn = (sortfn *) sort_ext;
case SORT_ACCESS: break;
sfn = (sortfn *) sort_atime;
break; case SORT_ACCESS:
case SORT_MODIFY: sfn = (sortfn *) sort_atime;
sfn = (sortfn *) sort_time; break;
break;
case SORT_CHANGE: case SORT_MODIFY:
sfn = (sortfn *) sort_ctime; sfn = (sortfn *) sort_time;
break; break;
case SORT_SIZE:
sfn = (sortfn *) sort_size; case SORT_CHANGE:
break; sfn = (sortfn *) sort_ctime;
break;
case SORT_SIZE:
sfn = (sortfn *) sort_size;
break;
default:
g_assert_not_reached ();
} }
return sfn; return sfn;
} }
void void
gnome_sort_cmd (GtkWidget *widget, WPanel *panel) gnome_sort_cmd (GtkWidget *widget, WPanel *panel)
{ {
@ -276,10 +286,10 @@ gnome_sort_cmd (GtkWidget *widget, WPanel *panel)
GtkWidget *cbox1, *cbox2; GtkWidget *cbox1, *cbox2;
sortfn *sfn = NULL; sortfn *sfn = NULL;
sort_box = gnome_dialog_new (_("Sort By"), GNOME_STOCK_BUTTON_OK, sort_box = gnome_dialog_new (_("Sort By"), GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL, NULL); GNOME_STOCK_BUTTON_CANCEL, NULL);
gmc_window_setup_from_panel (GNOME_DIALOG (sort_box), panel); gmc_window_setup_from_panel (GNOME_DIALOG (sort_box), panel);
/* we define this up here so we can pass it in to our callback */ /* we define this up here so we can pass it in to our callback */
cbox1 = gtk_check_button_new_with_label (_("Ignore case sensitivity.")); cbox1 = gtk_check_button_new_with_label (_("Ignore case sensitivity."));
hbox = gtk_hbox_new (FALSE, 0); hbox = gtk_hbox_new (FALSE, 0);
@ -295,7 +305,7 @@ gnome_sort_cmd (GtkWidget *widget, WPanel *panel)
gtk_object_set_data (GTK_OBJECT (menu_item), "SORT_ORDER_CODE", (gpointer) SORT_NAME); gtk_object_set_data (GTK_OBJECT (menu_item), "SORT_ORDER_CODE", (gpointer) SORT_NAME);
gtk_signal_connect (GTK_OBJECT (menu_item), "activate", gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
GTK_SIGNAL_FUNC (sort_callback), cbox1); GTK_SIGNAL_FUNC (sort_callback), cbox1);
menu_item = gtk_menu_item_new_with_label ( _("File Type")); menu_item = gtk_menu_item_new_with_label ( _("File Type"));
gtk_menu_append (GTK_MENU (menu), menu_item); gtk_menu_append (GTK_MENU (menu), menu_item);
gtk_object_set_data (GTK_OBJECT (menu_item), "SORT_ORDER_CODE", (gpointer) SORT_EXTENSION); gtk_object_set_data (GTK_OBJECT (menu_item), "SORT_ORDER_CODE", (gpointer) SORT_EXTENSION);
@ -329,7 +339,7 @@ gnome_sort_cmd (GtkWidget *widget, WPanel *panel)
gtk_widget_show_all (menu); gtk_widget_show_all (menu);
gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox1), panel->case_sensitive); gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox1), panel->case_sensitive);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (sort_box)->vbox), gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (sort_box)->vbox),
cbox1, FALSE, FALSE, 0); cbox1, FALSE, FALSE, 0);
@ -380,8 +390,8 @@ get_nickname (gchar *text)
GtkWidget *label; GtkWidget *label;
gchar *retval = NULL; gchar *retval = NULL;
int destroy; int destroy;
dlg = gnome_dialog_new (_("Enter name."), GNOME_STOCK_BUTTON_OK, dlg = gnome_dialog_new (_("Enter name."), GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL, NULL); GNOME_STOCK_BUTTON_CANCEL, NULL);
gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE);
entry = gtk_entry_new (); entry = gtk_entry_new ();
@ -408,7 +418,7 @@ get_nickname (gchar *text)
if (destroy) if (destroy)
gtk_widget_destroy (dlg); gtk_widget_destroy (dlg);
return retval; return retval;
} }
static void static void
@ -490,7 +500,7 @@ load_settings (GtkCList *clist)
gint i = 0; gint i = 0;
profile_keys = profile_init_iterator (panelize_section, profile_name); profile_keys = profile_init_iterator (panelize_section, profile_name);
if (!profile_keys){ if (!profile_keys){
insert_tab[0] = _("Find all core files"); insert_tab[0] = _("Find all core files");
i = gtk_clist_insert (clist, i, insert_tab); i = gtk_clist_insert (clist, i, insert_tab);
@ -536,14 +546,14 @@ gnome_external_panelize (GtkWidget *widget, WPanel *panel)
gint i; gint i;
gchar *row_data; gchar *row_data;
int destroy; int destroy;
data = g_new0 (ep_dlg_data, 1); data = g_new0 (ep_dlg_data, 1);
data->setting_text = FALSE; data->setting_text = FALSE;
data->selected = -1; data->selected = -1;
data->ep_dlg = gnome_dialog_new (_("Run Command"), GNOME_STOCK_BUTTON_OK, data->ep_dlg = gnome_dialog_new (_("Run Command"), GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL, NULL); GNOME_STOCK_BUTTON_CANCEL, NULL);
gtk_window_set_position (GTK_WINDOW (data->ep_dlg), GTK_WIN_POS_MOUSE); gtk_window_set_position (GTK_WINDOW (data->ep_dlg), GTK_WIN_POS_MOUSE);
/* Frame 1 */ /* Frame 1 */
frame = gtk_frame_new (_("Preset Commands")); frame = gtk_frame_new (_("Preset Commands"));
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (data->ep_dlg)->vbox), gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (data->ep_dlg)->vbox),
@ -587,7 +597,7 @@ gnome_external_panelize (GtkWidget *widget, WPanel *panel)
gtk_widget_show_all (GNOME_DIALOG (data->ep_dlg)->vbox); gtk_widget_show_all (GNOME_DIALOG (data->ep_dlg)->vbox);
destroy = TRUE; destroy = TRUE;
switch (gnome_dialog_run (GNOME_DIALOG (data->ep_dlg))) { switch (gnome_dialog_run (GNOME_DIALOG (data->ep_dlg))) {
case 0: case 0:
gtk_widget_hide (data->ep_dlg); gtk_widget_hide (data->ep_dlg);
@ -659,7 +669,7 @@ gnome_filter_cmd (GtkWidget *widget, WPanel *panel)
GtkWidget *label; GtkWidget *label;
gchar *text1, *text2, *text3; gchar *text1, *text2, *text3;
filter_dlg = gnome_dialog_new (_("Set Filter"), GNOME_STOCK_BUTTON_OK, filter_dlg = gnome_dialog_new (_("Set Filter"), GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL, NULL); GNOME_STOCK_BUTTON_CANCEL, NULL);
gtk_window_set_position (GTK_WINDOW (filter_dlg), GTK_WIN_POS_MOUSE); gtk_window_set_position (GTK_WINDOW (filter_dlg), GTK_WIN_POS_MOUSE);
if (easy_patterns) { if (easy_patterns) {
@ -679,7 +689,7 @@ gnome_filter_cmd (GtkWidget *widget, WPanel *panel)
} }
entry = gnome_entry_new (text1); entry = gnome_entry_new (text1);
gnome_entry_load_history (GNOME_ENTRY (entry)); gnome_entry_load_history (GNOME_ENTRY (entry));
if (text2) { if (text2) {
gtk_entry_set_text (GTK_ENTRY (gnome_entry_gtk_entry (GNOME_ENTRY (entry))), text2); gtk_entry_set_text (GTK_ENTRY (gnome_entry_gtk_entry (GNOME_ENTRY (entry))), text2);
gnome_entry_prepend_history (GNOME_ENTRY (entry), FALSE, text3); gnome_entry_prepend_history (GNOME_ENTRY (entry), FALSE, text3);
@ -692,7 +702,7 @@ gnome_filter_cmd (GtkWidget *widget, WPanel *panel)
label = gtk_label_new (_("Enter a Regular Expression to filter files in the panel view.")); label = gtk_label_new (_("Enter a Regular Expression to filter files in the panel view."));
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (filter_dlg)->vbox), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (filter_dlg)->vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (filter_dlg)->vbox), entry, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (filter_dlg)->vbox), entry, FALSE, FALSE, 0);
@ -717,7 +727,7 @@ gnome_filter_cmd (GtkWidget *widget, WPanel *panel)
gtk_label_set_text (GTK_LABEL (panel->status), _("Show all files")); gtk_label_set_text (GTK_LABEL (panel->status), _("Show all files"));
} else } else
gtk_label_set_text (GTK_LABEL (panel->status), panel->filter); gtk_label_set_text (GTK_LABEL (panel->status), panel->filter);
gnome_entry_save_history (GNOME_ENTRY (entry)); gnome_entry_save_history (GNOME_ENTRY (entry));
x_filter_changed (panel); x_filter_changed (panel);
reread_cmd (); reread_cmd ();
@ -759,7 +769,7 @@ gnome_open_files (GtkWidget *widget, WPanel *panel)
} }
#endif #endif
g_list_free (later); g_list_free (later);
} }
void void
@ -782,7 +792,7 @@ dentry_apply_callback(GtkWidget *widget, int page, gpointer data)
if (page != -1) if (page != -1)
return; return;
g_return_if_fail(data!=NULL); g_return_if_fail(data!=NULL);
g_return_if_fail(GNOME_IS_DENTRY_EDIT(data)); g_return_if_fail(GNOME_IS_DENTRY_EDIT(data));
dentry = gnome_dentry_get_dentry(GNOME_DENTRY_EDIT(data)); dentry = gnome_dentry_get_dentry(GNOME_DENTRY_EDIT(data));
@ -838,8 +848,8 @@ gnome_select (GtkWidget *widget, WPanel *panel)
GtkWidget *entry; GtkWidget *entry;
GtkWidget *label; GtkWidget *label;
int run; int run;
select_dialog = gnome_dialog_new (_("Select File"), GNOME_STOCK_BUTTON_OK, select_dialog = gnome_dialog_new (_("Select File"), GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL, NULL); GNOME_STOCK_BUTTON_CANCEL, NULL);
gtk_window_set_position (GTK_WINDOW (select_dialog), GTK_WIN_POS_MOUSE); gtk_window_set_position (GTK_WINDOW (select_dialog), GTK_WIN_POS_MOUSE);
entry = gnome_entry_new ("mc_select"); entry = gnome_entry_new ("mc_select");
@ -850,10 +860,10 @@ gnome_select (GtkWidget *widget, WPanel *panel)
label = gtk_label_new (_("Enter a filter here to select files in the panel view with.\n\nFor example:\n*.png will select all png images")); label = gtk_label_new (_("Enter a filter here to select files in the panel view with.\n\nFor example:\n*.png will select all png images"));
else else
label = gtk_label_new (_("Enter a regular expression here to select files in the panel view with.")); label = gtk_label_new (_("Enter a regular expression here to select files in the panel view with."));
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (select_dialog)->vbox), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (select_dialog)->vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (select_dialog)->vbox), entry, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (select_dialog)->vbox), entry, FALSE, FALSE, 0);
@ -866,7 +876,7 @@ gnome_select (GtkWidget *widget, WPanel *panel)
} }
if (run != -1) if (run != -1)
gtk_widget_destroy (select_dialog); gtk_widget_destroy (select_dialog);
if ((reg_exp == NULL) || (*reg_exp == '\000')) { if ((reg_exp == NULL) || (*reg_exp == '\000')) {
g_free (reg_exp); g_free (reg_exp);
return; return;
@ -927,7 +937,7 @@ set_cursor_normal (WPanel *panel)
if (is_a_desktop_panel (panel)) if (is_a_desktop_panel (panel))
return; return;
cursor = gdk_cursor_new (GDK_TOP_LEFT_ARROW); cursor = gdk_cursor_new (GDK_TOP_LEFT_ARROW);
gdk_window_set_cursor (GTK_WIDGET (panel->xwindow)->window, cursor); gdk_window_set_cursor (GTK_WIDGET (panel->xwindow)->window, cursor);
gdk_cursor_destroy (cursor); gdk_cursor_destroy (cursor);
@ -944,7 +954,7 @@ gnome_new_link (GtkWidget *widget, WPanel *panel)
_("Enter the URL:"), ""); _("Enter the URL:"), "");
if (!url) if (!url)
return; return;
template = g_concat_dir_and_file (desktop_directory, "urlXXXXXX"); template = g_concat_dir_and_file (desktop_directory, "urlXXXXXX");
if (mktemp (template)) { if (mktemp (template)) {

Просмотреть файл

@ -51,8 +51,9 @@ int desktop_arr_rows = FALSE;
/* The computed name of the user's desktop directory */ /* The computed name of the user's desktop directory */
char *desktop_directory; char *desktop_directory;
/* Layout information: number of rows/columns for the layout slots, and the array of slots. Each /* Layout information: number of rows/columns for the layout slots, and the
* slot is an integer that specifies the number of icons that belong to that slot. * array of slots. Each slot is an integer that specifies the number of icons
* that belong to that slot.
*/ */
static int layout_screen_width; static int layout_screen_width;
static int layout_screen_height; static int layout_screen_height;
@ -129,9 +130,10 @@ static int click_current_y;
static int click_dragging; static int click_dragging;
static DesktopIconInfo *desktop_icon_info_new (char *filename, char *url, char *caption, int xpos, int ypos); static DesktopIconInfo *desktop_icon_info_new (char *filename, char *url, char *caption,
int xpos, int ypos);
static GHashTable *infos_hash; static GHashTable *icon_hash;
/* Convenience function to figure out the slot corresponding to an (x, y) position */ /* Convenience function to figure out the slot corresponding to an (x, y) position */
@ -147,16 +149,17 @@ get_slot_from_pos (int x, int y, int *u, int *v)
*v = CLAMP (vv, 0, layout_rows - 1); *v = CLAMP (vv, 0, layout_rows - 1);
} }
static void swap(int *a, int *b) { /* Swaps two integer variables */
static void
swap (int *a, int *b)
{
int tmp; int tmp;
g_return_if_fail(a != NULL);
g_return_if_fail(b != NULL);
tmp = *a; tmp = *a;
*a = *b; *a = *b;
*b = tmp; *b = tmp;
} }
/* Looks for a free slot in the layout_slots array and returns the coordinates /* Looks for a free slot in the layout_slots array and returns the coordinates
* that coorespond to it. "Free" means it either has zero icons in it, or it * that coorespond to it. "Free" means it either has zero icons in it, or it
* has the minimum number of icons of all the slots. Returns the number of * has the minimum number of icons of all the slots. Returns the number of
@ -168,35 +171,46 @@ auto_pos (int sx, int ex, int sy, int ey, int *slot)
int min, min_slot; int min, min_slot;
int x, y; int x, y;
int val; int val;
int xinc = 1, yinc = 1; int xinc, yinc;
int r, b; int r, b;
min = l_slots(sx, sy).num_icons; min = l_slots (sx, sy).num_icons;
min_slot = sx * layout_rows + sy; min_slot = sx * layout_rows + sy;
xinc = yinc = 1;
if (desktop_arr_rows) { if (desktop_arr_rows) {
swap (&ex, &ey); swap (&ex, &ey);
swap (&sx, &sy); swap (&sx, &sy);
} }
/* if (desktop_arr_r2l) swap (&sx, &ex); #if 0
if (desktop_arr_b2t) swap (&sy, &ey);*/ if (desktop_arr_r2l)
if (desktop_arr_r2l) xinc = -1; swap (&sx, &ex);
if (desktop_arr_b2t) yinc = -1;
if (desktop_arr_b2t)
if (desktop_arr_rows) swap (&xinc, &yinc); swap (&sy, &ey);
#endif
if (desktop_arr_r2l)
xinc = -1;
if (desktop_arr_b2t)
yinc = -1;
if (desktop_arr_rows)
swap (&xinc, &yinc);
r = desktop_arr_r2l; r = desktop_arr_r2l;
b = desktop_arr_b2t; b = desktop_arr_b2t;
if (desktop_arr_rows) swap (&r, &b); if (desktop_arr_rows)
swap (&r, &b);
for (x = sx; (r ? (x >= ex) : (x <= ex));x += xinc) { for (x = sx; (r ? (x >= ex) : (x <= ex)); x += xinc) {
for (y = sy;(b ? (y >= ey) : (y <= ey)); y += yinc) { for (y = sy; (b ? (y >= ey) : (y <= ey)); y += yinc) {
if (desktop_arr_rows) if (desktop_arr_rows)
val = l_slots(y, x).num_icons; val = l_slots (y, x).num_icons;
else else
val = l_slots(x, y).num_icons; val = l_slots (x, y).num_icons;
if (val < min || val == 0) { if (val < min || val == 0) {
min = val; min = val;
@ -208,9 +222,11 @@ auto_pos (int sx, int ex, int sy, int ey, int *slot)
break; break;
} }
} }
if (val == 0) break;
if (val == 0)
break;
} }
*slot = min_slot; *slot = min_slot;
return min; return min;
} }
@ -219,18 +235,34 @@ auto_pos (int sx, int ex, int sy, int ey, int *slot)
static void static void
get_icon_auto_pos (int *x, int *y) get_icon_auto_pos (int *x, int *y)
{ {
int val1, val2; int val1;
int slot1, slot2; int slot1;
int slot; int slot;
int sx, sy, ex, ey; int sx, sy, ex, ey;
/* get_slot_from_pos (*x, *y, &sx, &sy);*/ #if 0
/* FIXME funky stuff going on with the efficient positioning thingy */ get_slot_from_pos (*x, *y, &sx, &sy);
if (desktop_arr_r2l) sx = layout_cols - 1; else sx = 0; #endif
if (desktop_arr_b2t) sy = layout_rows - 1; else sy = 0; /* FIXME funky stuff going on with the efficient positioning thingy */
if (desktop_arr_r2l)
sx = layout_cols - 1;
else
sx = 0;
if (desktop_arr_r2l) ex = 0; else ex = layout_cols - 1; if (desktop_arr_b2t)
if (desktop_arr_b2t) ey = 0; else ey = layout_rows - 1; sy = layout_rows - 1;
else
sy = 0;
if (desktop_arr_r2l)
ex = 0;
else
ex = layout_cols - 1;
if (desktop_arr_b2t)
ey = 0;
else
ey = layout_rows - 1;
/* Look forwards until the end of the grid. If we could not find an /* Look forwards until the end of the grid. If we could not find an
* empty spot, find the second best. * empty spot, find the second best.
@ -239,17 +271,27 @@ get_icon_auto_pos (int *x, int *y)
val1 = auto_pos (sx, ex, sy, ey, &slot1); val1 = auto_pos (sx, ex, sy, ey, &slot1);
slot = slot1; slot = slot1;
/* to be used at a later date:
* if (val1 == 0) #if 0
/* to be used at a later date */
if (val1 == 0)
slot = slot1; slot = slot1;
else { else {
if (desktop_arr_r2l) sx = layout_cols - 1; else sx = 0; if (desktop_arr_r2l)
if (desktop_arr_b2t) sy = layout_rows - 1; else sy = 0; sx = layout_cols - 1;
else
sx = 0;
if (desktop_arr_b2t)
sy = layout_rows - 1;
else
sy = 0;
val2 = auto_pos (sx, ex, sy, ey, &slot2); val2 = auto_pos (sx, ex, sy, ey, &slot2);
if (val2 < val1) if (val2 < val1)
slot = slot2; slot = slot2;
}*/ }
#endif
*x = (slot / layout_rows) * DESKTOP_SNAP_X; *x = (slot / layout_rows) * DESKTOP_SNAP_X;
*y = (slot % layout_rows) * DESKTOP_SNAP_Y; *y = (slot % layout_rows) * DESKTOP_SNAP_Y;
@ -359,6 +401,8 @@ desktop_icon_info_destroy (DesktopIconInfo *dii)
gtk_widget_destroy (dii->dicon); gtk_widget_destroy (dii->dicon);
remove_from_slot (dii); remove_from_slot (dii);
g_hash_table_remove (icon_hash, dii->filename);
g_free (dii->url); g_free (dii->url);
g_free (dii->filename); g_free (dii->filename);
g_free (dii); g_free (dii);
@ -542,10 +586,13 @@ desktop_reload_icons (int user_pos, int xpos, int ypos)
fau = g_new0 (file_and_url_t, 1); fau = g_new0 (file_and_url_t, 1);
fau->filename = g_strdup (dirent->d_name); fau->filename = g_strdup (dirent->d_name);
if (desktop_url) if (desktop_url)
fau->url = g_strdup (desktop_url); fau->url = g_strdup (desktop_url);
if (caption) if (caption)
fau->caption = g_strdup (caption); fau->caption = g_strdup (caption);
need_position_list = g_slist_prepend (need_position_list, fau); need_position_list = g_slist_prepend (need_position_list, fau);
} }
@ -664,36 +711,35 @@ static WPanel *create_panel_from_desktop(); /* Fwd decl */
static void free_panel_from_desktop(WPanel *panel); static void free_panel_from_desktop(WPanel *panel);
/* Perform automatic arrangement of the desktop icons */ /* Perform automatic arrangement of the desktop icons */
void static void
desktop_arrange_icons (SortType type) desktop_arrange_icons (SortType type)
{ {
WPanel *panel; WPanel *panel;
sortfn *sfn = NULL; sortfn *sfn;
DesktopIconInfo *dii; DesktopIconInfo *dii;
int i; int i;
dir_list dir; dir_list dir;
int xpos, ypos; int xpos, ypos;
panel = create_panel_from_desktop (); panel = create_panel_from_desktop ();
sfn = sort_get_func_from_type(type); sfn = sort_get_func_from_type (type);
g_return_if_fail(sfn != NULL); g_assert (sfn != NULL);
do_sort(&panel->dir, sfn, panel->count - 1, FALSE, FALSE); do_sort (&panel->dir, sfn, panel->count - 1, FALSE, FALSE);
dir = panel->dir; dir = panel->dir;
g_return_if_fail(dir.list != NULL); g_assert (dir.list != NULL);
for (i = 0; i < dir.size; i++) for (i = 0; i < dir.size; i++)
remove_from_slot (desktop_icon_info_get_by_filename( remove_from_slot (desktop_icon_info_get_by_filename (dir.list[i].fname));
dir.list[i].fname));
for (i = 0; i < dir.size; i++) { for (i = 0; i < dir.size; i++) {
dii = desktop_icon_info_get_by_filename(dir.list[i].fname); dii = desktop_icon_info_get_by_filename (dir.list[i].fname);
xpos = ypos = 0; xpos = ypos = 0;
get_icon_auto_pos (&xpos, &ypos); get_icon_auto_pos (&xpos, &ypos);
desktop_icon_info_place (dii, xpos, ypos); desktop_icon_info_place (dii, xpos, ypos);
} }
free_panel_from_desktop(panel); free_panel_from_desktop (panel);
} }
/* Unselects all the desktop icons except the one in exclude */ /* Unselects all the desktop icons except the one in exclude */
@ -947,8 +993,11 @@ text_changed (GnomeIconTextItem *iti, gpointer data)
/* Set the new name */ /* Set the new name */
g_hash_table_remove (icon_hash, dii->filename);
g_free (dii->filename); g_free (dii->filename);
dii->filename = g_strdup (new_name); dii->filename = g_strdup (new_name);
g_hash_table_insert (icon_hash, dii->filename, dii);
set_icon_wmclass (dii); set_icon_wmclass (dii);
desktop_reload_icons (FALSE, 0, 0); desktop_reload_icons (FALSE, 0, 0);
@ -1512,8 +1561,8 @@ DesktopIconInfo *
desktop_icon_info_get_by_filename (char *filename) desktop_icon_info_get_by_filename (char *filename)
{ {
g_return_val_if_fail (filename != NULL, NULL); g_return_val_if_fail (filename != NULL, NULL);
return g_hash_table_lookup(infos_hash, filename); return g_hash_table_lookup (icon_hash, filename);
} }
/* Used to execute the popup menu for desktop icons */ /* Used to execute the popup menu for desktop icons */
@ -2136,12 +2185,11 @@ desktop_icon_info_new (char *filename, char *url, char *caption, int xpos, int y
setup_icon_dnd_dest (dii); setup_icon_dnd_dest (dii);
/* Place the icon and append it to the list */ /* Place the icon and append it to the list */
desktop_icon_info_place (dii, xpos, ypos); desktop_icon_info_place (dii, xpos, ypos);
/* Lookup for filename */ /* Put into icon hash table */
g_hash_table_insert(infos_hash, dii->filename, dii); g_hash_table_insert (icon_hash, dii->filename, dii);
return dii; return dii;
} }
@ -2310,7 +2358,7 @@ setup_motif_dnd_proxy (guint32 xid, GdkWindow *proxy_window)
info.protocol_style = 5; /* XmDRAG_DYNAMIC */ info.protocol_style = 5; /* XmDRAG_DYNAMIC */
info.proxy_window = proxy_xid; info.proxy_window = proxy_xid;
info.num_drop_sites = 0; info.num_drop_sites = 0;
info.total_size = sizeof(info); info.total_size = sizeof (info);
XChangeProperty (gdk_display, xid, XChangeProperty (gdk_display, xid,
receiver_info_atom, receiver_info_atom,
@ -2473,40 +2521,43 @@ find_click_proxy_window (void)
return proxy_gdk_window; return proxy_gdk_window;
} }
/* Callback for arranging the icons on the desktop */ /* Callback for arranging icons by name */
/* These are all NOT static because glayout.c calls them too */ static void
void
handle_arrange_icons_name (GtkWidget *widget, gpointer data) handle_arrange_icons_name (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_NAME); desktop_arrange_icons (SORT_NAME);
} }
void /* Callback for arranging icons by file type */
static void
handle_arrange_icons_type (GtkWidget *widget, gpointer data) handle_arrange_icons_type (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_EXTENSION); desktop_arrange_icons (SORT_EXTENSION);
} }
void /* Callback for arranging icons by file size */
static void
handle_arrange_icons_size (GtkWidget *widget, gpointer data) handle_arrange_icons_size (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_SIZE); desktop_arrange_icons (SORT_SIZE);
} }
void /* Callback for arranging icons by access time */
static void
handle_arrange_icons_access (GtkWidget *widget, gpointer data) handle_arrange_icons_access (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_ACCESS); desktop_arrange_icons (SORT_ACCESS);
} }
void /* Callback for arranging icons by modification time */
static void
handle_arrange_icons_mod (GtkWidget *widget, gpointer data) handle_arrange_icons_mod (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_MODIFY); desktop_arrange_icons (SORT_MODIFY);
} }
void /* Callback for arranging icons by change time */
static void
handle_arrange_icons_change (GtkWidget *widget, gpointer data) handle_arrange_icons_change (GtkWidget *widget, gpointer data)
{ {
desktop_arrange_icons (SORT_CHANGE); desktop_arrange_icons (SORT_CHANGE);
@ -2519,13 +2570,12 @@ handle_new_window (GtkWidget *widget, gpointer data)
new_panel_at (gnome_user_home_dir); new_panel_at (gnome_user_home_dir);
} }
/* Rescans the mountable devices in the desktop and re-creates their icons */
void void
desktop_rescan_devices (void) desktop_rescan_devices (void)
{ {
desktop_cleanup_devices (); desktop_cleanup_devices ();
gdesktop_init (); gdesktop_init ();
desktop_reload_icons (FALSE, 0, 0); desktop_reload_icons (FALSE, 0, 0);
} }
@ -2581,71 +2631,79 @@ new_terminal (GtkWidget *widget, gpointer data)
} }
static GnomeUIInfo gnome_panel_new_menu [] = { static GnomeUIInfo gnome_panel_new_menu [] = {
GNOMEUIINFO_ITEM_NONE(N_("_Terminal"), N_("Launch a new terminal in the current directory"), new_terminal), GNOMEUIINFO_ITEM_NONE (N_("_Terminal"), N_("Launch a new terminal in the current directory"), new_terminal),
/* If this ever changes, make sure you update create_new_menu accordingly. */ /* If this ever changes, make sure you update create_new_menu accordingly. */
GNOMEUIINFO_ITEM_NONE( N_("_Directory..."), N_("Creates a new directory"), gnome_mkdir_cmd ), GNOMEUIINFO_ITEM_NONE (N_("_Directory..."), N_("Creates a new directory"), gnome_mkdir_cmd),
GNOMEUIINFO_ITEM_NONE( N_("URL L_ink..."), N_("Creates a new URL link"), gnome_new_link ), GNOMEUIINFO_ITEM_NONE (N_("URL L_ink..."), N_("Creates a new URL link"), gnome_new_link),
GNOMEUIINFO_ITEM_NONE( N_("_Launcher..."), N_("Creates a new launcher"), gnome_new_launcher ), GNOMEUIINFO_ITEM_NONE (N_("_Launcher..."), N_("Creates a new launcher"), gnome_new_launcher),
GNOMEUIINFO_END GNOMEUIINFO_END
}; };
/* Ack. gnome_popup_menu's marshaller overrides the user_data. So /* Menu items for arranging the desktop icons */
* instead of having a single nice function using that, we have to have GnomeUIInfo desktop_arrange_icons_items[] = {
* many functions. That sucks. */ GNOMEUIINFO_ITEM_NONE (N_("By _Name"), NULL, handle_arrange_icons_name),
GNOMEUIINFO_ITEM_NONE (N_("By File _Type"), NULL, handle_arrange_icons_type),
GnomeUIInfo arrange_icons_items[] = { GNOMEUIINFO_ITEM_NONE (N_("By _Size"), NULL, handle_arrange_icons_size),
GNOMEUIINFO_ITEM_NONE (N_("By Name"), NULL, handle_arrange_icons_name), GNOMEUIINFO_ITEM_NONE (N_("By Time Last _Accessed"), NULL, handle_arrange_icons_access),
GNOMEUIINFO_ITEM_NONE (N_("By File Type"), NULL, handle_arrange_icons_type), GNOMEUIINFO_ITEM_NONE (N_("By Time Last _Modified"), NULL, handle_arrange_icons_mod),
GNOMEUIINFO_ITEM_NONE (N_("By Size"), NULL, handle_arrange_icons_size), GNOMEUIINFO_ITEM_NONE (N_("By Time Last _Changed"), NULL, handle_arrange_icons_change),
GNOMEUIINFO_ITEM_NONE (N_("By Time Last Accessed"), NULL, handle_arrange_icons_access),
GNOMEUIINFO_ITEM_NONE (N_("By Time Last Modified"), NULL, handle_arrange_icons_mod),
GNOMEUIINFO_ITEM_NONE (N_("By Time Last Changed"), NULL, handle_arrange_icons_change),
GNOMEUIINFO_END GNOMEUIINFO_END
}; };
/* The popup menu for the desktop */ /* The popup menu for the desktop */
GnomeUIInfo desktop_popup_items[] = { GnomeUIInfo desktop_popup_items[] = {
GNOMEUIINFO_MENU_NEW_SUBTREE(gnome_panel_new_menu), GNOMEUIINFO_MENU_NEW_SUBTREE (gnome_panel_new_menu),
GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_SUBTREE(N_("Arrange Icons..."), arrange_icons_items), GNOMEUIINFO_SUBTREE (N_("_Arrange Icons"), desktop_arrange_icons_items),
GNOMEUIINFO_ITEM_NONE (N_("Create New Window"), NULL, handle_new_window), GNOMEUIINFO_ITEM_NONE (N_("Create _New Window"), NULL, handle_new_window),
GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_ITEM_NONE (N_("Recreate Desktop Shortcuts"), NULL, handle_rescan_devices), GNOMEUIINFO_ITEM_NONE (N_("Recreate Desktop _Shortcuts"), NULL, handle_rescan_devices),
GNOMEUIINFO_ITEM_NONE (N_("Rescan Desktop"), NULL, handle_rescan_desktop), GNOMEUIINFO_ITEM_NONE (N_("Rescan _Desktop"), NULL, handle_rescan_desktop),
GNOMEUIINFO_ITEM_NONE (N_("Configure Background Image"), NULL, set_background_image), GNOMEUIINFO_ITEM_NONE (N_("Configure _Background Image"), NULL, set_background_image),
GNOMEUIINFO_END GNOMEUIINFO_END
}; };
static GList* strip_tearoff_menu(GnomeUIInfo *infos) { static int
strip_tearoff_menu_item (GnomeUIInfo *infos)
{
GtkWidget *shell; GtkWidget *shell;
GList *child_list; GList *child_list;
g_return_if_fail(infos != NULL); int n;
g_assert (infos != NULL);
shell = infos[0].widget->parent; shell = infos[0].widget->parent;
child_list = gtk_container_children (GTK_CONTAINER (shell)); child_list = gtk_container_children (GTK_CONTAINER (shell));
if (GTK_IS_TEAROFF_MENU_ITEM (child_list->data)) n = g_list_length (child_list);
if (child_list && GTK_IS_TEAROFF_MENU_ITEM (child_list->data)) {
n--;
gtk_widget_destroy (GTK_WIDGET (child_list->data));
#if 0
gtk_widget_hide (GTK_WIDGET (child_list->data)); gtk_widget_hide (GTK_WIDGET (child_list->data));
return child_list; #endif
}
return n;
} }
/* Executes the popup menu for the desktop */ /* Executes the popup menu for the desktop */
static void static void
desktop_popup (GdkEventButton *event) desktop_popup (GdkEventButton *event)
{ {
GtkWidget *shell; GtkWidget *shell;
GtkWidget *popup; GtkWidget *popup;
GList *child_list;
gchar *file, *file2; gchar *file, *file2;
WPanel *panel; WPanel *panel;
gint i; gint i;
/* Create the menu and then strip the tearoff menu items, sigh... */
popup = gnome_popup_menu_new (desktop_popup_items); popup = gnome_popup_menu_new (desktop_popup_items);
/* First thing we want to do is strip off the STUPID tear off menu... S-: */
strip_tearoff_menu(arrange_icons_items); strip_tearoff_menu_item (desktop_arrange_icons_items);
child_list = strip_tearoff_menu(gnome_panel_new_menu); i = strip_tearoff_menu_item (gnome_panel_new_menu);
shell = gnome_panel_new_menu[0].widget->parent; shell = gnome_panel_new_menu[0].widget->parent;
i = g_list_length (child_list);
g_list_free (child_list);
file = gnome_unconditional_datadir_file ("mc/templates"); file = gnome_unconditional_datadir_file ("mc/templates");
i = create_new_menu_from (file, shell, i); i = create_new_menu_from (file, shell, i);
file2 = gnome_datadir_file ("mc/templates"); file2 = gnome_datadir_file ("mc/templates");
@ -3091,8 +3149,8 @@ setup_desktop_clicks (void)
void void
desktop_init (void) desktop_init (void)
{ {
infos_hash = g_hash_table_new(g_str_hash, g_str_equal); icon_hash = g_hash_table_new (g_str_hash, g_str_equal);
gdnd_init (); gdnd_init ();
gicon_init (); gicon_init ();
create_layout_info (); create_layout_info ();
@ -3139,7 +3197,7 @@ desktop_destroy (void)
gtk_widget_destroy (proxy_invisible); gtk_widget_destroy (proxy_invisible);
XDeleteProperty (GDK_DISPLAY (), GDK_ROOT_WINDOW (), gdk_atom_intern ("XdndProxy", FALSE)); XDeleteProperty (GDK_DISPLAY (), GDK_ROOT_WINDOW (), gdk_atom_intern ("XdndProxy", FALSE));
g_hash_table_destroy(infos_hash); g_hash_table_destroy (icon_hash);
} }
void void

Просмотреть файл

@ -10,7 +10,6 @@
#define GDESKTOP_H #define GDESKTOP_H
#include "dir.h" #include "dir.h"
#include "gcmd.h"
/* Snap granularity for desktop icons -- maybe these should be calculated in /* Snap granularity for desktop icons -- maybe these should be calculated in
@ -33,7 +32,8 @@ extern int desktop_arr_b2t; /* Arrange from bottom to top */
extern int desktop_arr_rows; /* Arrange in rows instead of columns */ extern int desktop_arr_rows; /* Arrange in rows instead of columns */
extern char *desktop_directory; extern char *desktop_directory;
extern GnomeUIInfo arrange_icons_items[]; /* Menu items for arranging the desktop icons */
extern GnomeUIInfo desktop_arrange_icons_items[];
/* Initializes the desktop -- init DnD, load the default desktop icons, etc. */ /* Initializes the desktop -- init DnD, load the default desktop icons, etc. */
void desktop_init (void); void desktop_init (void);
@ -69,10 +69,6 @@ gboolean is_ejectable (char *filename);
gboolean do_mount_umount (char *filename, gboolean is_mount); gboolean do_mount_umount (char *filename, gboolean is_mount);
gboolean do_eject (char *filename); gboolean do_eject (char *filename);
void handle_arrange_icons(GtkWidget *widget, gpointer data);
/* Used from two places so no longer static ^^ */
void desktop_arrange_icons (SortType type);
void desktop_rescan_devices (void); void desktop_rescan_devices (void);
void desktop_reload_icons (int user_pos, int xpos, int ypos); void desktop_reload_icons (int user_pos, int xpos, int ypos);
void desktop_create_url (const char *filename, const char *title, const char *url, const char *icon); void desktop_create_url (const char *filename, const char *title, const char *url, const char *icon);

Просмотреть файл

@ -451,10 +451,10 @@ GnomeUIInfo gnome_panel_about_menu [] = {
}; };
GnomeUIInfo gnome_panel_desktop_menu [] = { GnomeUIInfo gnome_panel_desktop_menu [] = {
GNOMEUIINFO_SUBTREE(N_("Arrange Icons..."), arrange_icons_items), GNOMEUIINFO_SUBTREE(N_("_Arrange Icons"), desktop_arrange_icons_items),
GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_ITEM_NONE (N_("Rescan System Devices"), NULL, desktop_rescan_devices), GNOMEUIINFO_ITEM_NONE (N_("Recreate Desktop _Shortcuts"), NULL, desktop_rescan_devices),
GNOMEUIINFO_ITEM_NONE (N_("Rescan Desktop"), NULL, do_desktop_rescan_devices), GNOMEUIINFO_ITEM_NONE (N_("Rescan _Desktop"), NULL, do_desktop_rescan_devices),
GNOMEUIINFO_END GNOMEUIINFO_END
}; };

Просмотреть файл

@ -1467,6 +1467,21 @@ file_list_popup (GdkEventButton *event, WPanel *panel)
} }
/* Returns whether an icon in the icon list is being edited. FIXME: This
* function uses a fantastically ugly hack to figure this out. It would be
* saner to have a function provided by the icon list widget to do it, but we
* can't break forwards compatibility at this point. It would be even saner to
* have a good DnD API for the icon list.
*/
static int
editing_icon_list (GnomeIconList *gil)
{
GnomeCanvasItem *item;
item = GNOME_CANVAS (gil)->focused_item;
return (item && GNOME_IS_ICON_TEXT_ITEM (item) && GNOME_ICON_TEXT_ITEM (item)->editing);
}
/* /*
* Strategy for activaing the drags from the icon-list: * Strategy for activaing the drags from the icon-list:
* *
@ -1482,6 +1497,9 @@ panel_icon_list_button_press (GtkWidget *widget, GdkEventButton *event, WPanel *
GnomeIconList *gil = GNOME_ICON_LIST (widget); GnomeIconList *gil = GNOME_ICON_LIST (widget);
int icon; int icon;
if (editing_icon_list (gil))
return FALSE;
if (event->type != GDK_BUTTON_PRESS) if (event->type != GDK_BUTTON_PRESS)
return FALSE; return FALSE;

Просмотреть файл

@ -133,7 +133,7 @@ view_status (WView *view, gboolean update_gui)
char buffer [80]; char buffer [80];
if (view->hex_mode) if (view->hex_mode)
g_snprintf (buffer, sizeof (buffer), _("Offset 0x%08x"), view->edit_cursor); g_snprintf (buffer, sizeof (buffer), _("Offset 0x%08lx"), view->edit_cursor);
else else
g_snprintf (buffer, sizeof (buffer), _("Col %d"), -view->start_col); g_snprintf (buffer, sizeof (buffer), _("Col %d"), -view->start_col);
if (strcmp (buffer, GTK_LABEL (view->gtk_offset)->label)) if (strcmp (buffer, GTK_LABEL (view->gtk_offset)->label))

Просмотреть файл

@ -1,3 +1,7 @@
1999-08-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
* ext.c: Added missing include file.
1999-08-08 David Martin <dmartina@usa.net> 1999-08-08 David Martin <dmartina@usa.net>
* menu.c: (create_menu): Adjust "#ifdef ENABLE_NLS" so that menus * menu.c: (create_menu): Adjust "#ifdef ENABLE_NLS" so that menus

Просмотреть файл

@ -48,6 +48,9 @@
#ifdef SCO_FLAVOR #ifdef SCO_FLAVOR
#include <sys/wait.h> #include <sys/wait.h>
#endif /* SCO_FLAVOR */ #endif /* SCO_FLAVOR */
#ifdef HAVE_GNOME
#include "gcmd.h"
#endif
/* If set, we execute the file command to check the file type */ /* If set, we execute the file command to check the file type */
int use_file_to_check_type = 1; int use_file_to_check_type = 1;