* gdesktop.c (desktop_drag_data_received): Simplify.
* gscreen.c (panel_icon_list_drag_data_received): Pass the full
path to gdnd_perform_drop.
(panel_clist_drag_data_received): same.
* gdnd.c (drop_on_directory): We no longer take a file_entry
here. The directory we get passed is already a fully qualified
name of the target location.
* 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
reported.
* dir.c (if_link_is_exe): Made this function take in a directory
argument as well -- the sought file may not be in the cwd, and
file entries do not carry the directory the file refers to.
* screen.c (do_enter_on_file_entry): Pass in the cpanel->cwd to
if_link_is_exe().
1999-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdesktop.c (do_mount_umount): Removed unused variable.
(do_eject): Return FALSE if there is no eject command.
(setup_devices): Removed unused variable.
* gdnd.c (drop_on_file): Pass the directory to if_link_is_exe().
(gdnd_validate_action): Likewise.
(gdnd_perform_drop): Made consistent with the rest of the code by
taking the directory name along with the file entry.
(gdnd_validate_action): Likewise.
* gdesktop.c (icon_drag_motion): Pass the directory to the gdnd
functions.
(icon_drag_data_received): Likewise.
(desktop_drag_motion): Likewise.
(desktop_drag_data_received): Likewise.
(desktop_icon_info_open): Pass the directory to if_link_is_exe().
* gscreen.c (panel_icon_list_drag_data_received): Pass the
directory to gdnd functions.
(panel_clist_drag_data_received): Likewise.
(panel_tree_drag_data_received): Likewise.
(panel_clist_drag_motion): Likewise.
(panel_icon_list_drag_motion): Likewise.
* gicon.c: Lots of changes to support the little symlink/stalled
icons that get overlaid on the normal file icons. We now have the
concept of an icon set, which is a cache of normal icons plus
their overlaid versions.
* gnome-file-property-dialog.c (apply_metadata_change): Use
gicon_get_filename_for_icon().
(generate_icon_sel): Likewise.
* gnome-file-property-dialog.c (create_general_properties): Use
buffers of size MC_MAXPATHLEN.
(init_metadata): Likewise.
* gdesktop.c (desktop_popup): Handle popup menus for the desktop.
(arrange_desktop_icons): New function to auto-arrange the desktop
icons.
(reload_desktop_icons): Take care of positioning the new icons by
ourselves; do not rely on desktop_icon_info_new() to do it.
(remove_from_slot): Reset the icon's slot to -1.
(reload_desktop_icons): Show all the icons after they have been
loaded, instead doing it one by one.
* gscreen.c (file_list_popup): Handle popup menus for the blank
areas of the file panels.
(panel_icon_list_button_press): Call file_list_popup().
(panel_file_list_press_row): Likewise.
* gdesktop-icon.c (set_icon): Do not destroy the image if it is
the same as the old one. Sigh, imlib really needs proper
refcounting.
* gscreen.c: Use gpopup_do_popup() until the new version is
finished.
* gpopup2.c (create_actions): Made the action selection logic
simpler.
(gpopup_do_popup2): Now can only operate on panels.
(file_actions): Sanitized the actions a bit.
* gutil.c (my_system_get_child_pid): sa_handler must be
gnome_sigchld_handler, not gnome_sigchld_installed.
* gpopup.c (dicon_properties): Do not call reread_cmd(). This is
a hack until the menus for panels/desktop are finished.
* gscreen.c (panel_file_list_press_row): Use gpopup_do_popup2().
* main.h: Added prototype for main_corba_register_server().
1999-02-10 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gscreen.c (ILIST_FROM_SW): New macro to extract the icon list
from the scrolled window.
(panel_create_icon_display): Create a scrolled window and put the
icon list inside it. Changed the rest of the code to know about
this.
* gcorba.c (do_window_close): It turns out that we *do* need to
call CORBA_free(). It was a bug in ORBit which was causing this
to crash.
* glayout.c (gnome_close_panel_event): This function should return
FALSE.
* gcorba.c (corba_init): Cast poa to PortableServer_POA.
(impl_GNOME_FileManagerWindow_close): Call gnome_close_panel(); do
not destroy the widget by hand.
* gcmd.c (gnome_close_panel): This function should be void.
* gpopup2.c (popup_handle_rescan): Call reread_cmd().
* gscreen.c (panel_icon_list_button_press): Return TRUE if we
handled a popup menu.
* gtkdtree.c (gtk_dtree_class_init): Added two new signals,
scan_begin and scan_end.
(gtk_dtree_expand): Call scan_begin() and scan_end().
(gtk_dtree_select_row): Call scan_begin() and scan_end().
(gtk_dtree_expand): Use gtk_ctree_select(), not gtk_dtree_select_row().
(gtk_dtree_collapse): Select the node when it is collapsed.
* gscreen.c (panel_create_tree_view): Added handlers for the
scan_begin and scan_end signals of the tree -- these will set the
cursor to a watch while the tree is being scanned.
* gcmd.c (gnome_reverse_selection_cmd_panel): new function -- does
good things
* gscreen.c (panel_icon_list_select_icon): uses new popup menu
(panel_icon_list_button_press): ditto
* gpopup2.c (gpopup_do_popup2): new implementation of popup
menu. Many changes -- almost all internal. Much cleaner now...
Off to England.
* gscreen.c (panel_file_list_configure_contents): Make the icon on
the type column be displayed.
(panel_file_list_select_row): Removed dead code.
(panel_file_list_press_row): Select the row before calling
gpopup_do_popup.
* gdnd.c (gdnd_validate_action): Added an "on_desktop" argument;
this specifies that the user is dragging over the desktop. Added
cases for drags of desktop icons and URLs.
(gdnd_perform_drop): New public function to handle drops. This is
now the master function to handle drops -- use this to make all of
MC consistent.
(drop_on_directory): Made static and renamed from
gdnd_drop_on_directory(). Made it fit for use by
gdnd_perform_drop().
(drop_url_on_directory): New function to drop an url on a
directory, moved over from gdesktop.c.
(drop_uri_list_on_directory): New function to handle drops of URI
lists on a directory.
(drop_on_file): New function to handle drops on a non-directory
file entry. This is moved over from gdesktop.c,
desktop_icon_drop_uri_list(). This is yet to be finished.
* gdesktop.c (desktop_icon_drop_uri_list): Fix memory leak.
(desktop_drag_motion): Use gdnd_validate_action().
(dnd_icon_targets): Allow dropping URLs on icons.
(icon_drag_motion): Use gdnd_validate_action().
(desktop_drag_data_received): Use gdnd_perform_drop().
(icon_drag_data_received): Use gdnd_perform_drop().
* gscreen.c (panel_icon_list_drag_data_received): Use
gdnd_perform_drop().
(panel_clist_drag_data_received): Use gdnd_perform_drop().
(panel_tree_drag_data_received): Use gdnd_perform_drop().
* gcmd.c (gnome_about_cmd): Fixed Foundation typo, and updated the
copyright date.
* gnome-file-property-dialog.c (create_settings_pane): We only let
you set info if we are a regular file, or a link to a regular file.
* gdesktop-icon.c (desktop_icon_reshape): Cut-n-paste error fixed
by Quartic.
1999-01-27 Jonathan Blandford <jrb@redhat.com>
* gnome-file-property-dialog.h (struct _GnomeFilePropertyDialog):
Now make open field mandatory and icon selection optional.
* gnome-file-property-dialog.c: as above
* gpopup.c (panel_action_properties): only allow setting images if
we_can_afford_the_speed.
* gicon.c: make we_can_afford_the_speed non-static
* gscreen.c (panel_clist_motion): Stop the emission of the
motion_notify_event signal so that it does not reach the clist.
We do not want it to select rows while dragging.
Replaced copy_strings() with g_strconcat().
* gdnd.c (gdnd_validate_action): Do not override GDK_ACTION_ASK.
* gdesktop.c: Updated the TODO list at the top of the file.
Wed Jan 27 03:14:46 1999 Timur Bakeyev <mc@bat.ru>
* 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-
placed by g_strconcat(), and sprintf() by g_snprintf(). Some other,
minor changes.
* gscreen.c (panel_setup_drag_scroll): Renamed from
panel_setup_drag_motion().
(panel_clist_drag_motion): Use gdnd_validate_action().
(panel_clist_motion): Return immediately if the event window is
not the clist_window. Otherwise, forward the event to
panel_widget_motion().
* gdnd.c (gdnd_find_panel_by_drag_context): New public function to
find a panel based on a drag context. This is basically the old
find_panel_owning_window() made public.
(gdnd_drop_on_directory): Test for the source widget being a tree,
and if so, do not use the default behavior for panels.
(gdnd_validate_action): New function to compute the final drag
action given some conditions. This is now used to make dragging
behavior consistent across the desktop and the file panels.
* gdnd.c (get_action): Sensitize the menu items based on the
allowed actions in the drag context.
(actions): Add some underlined accelerators for the action menu.
* gdesktop.c (icon_drag_motion): Use S_ISDIR() in addition to
fe->f.link_to_dir.
* gscreen.c (panel_file_list_scrolled): Removed this function, as
it was not used for anything useful.
* gdnd.c (gdnd_drop_on_directory): Duh. Use context->action, not
context->suggested_action.
1999-01-25 Federico Mena Quintero <federico@nuclecu.unam.mx>
* Makefile.am (libvfs_la_SOURCES): Added utilvfs.h.
* Make-mc.in (VFSHDRS): Likewise.
* gdesktop.c (desktop_drag_data_received): Do not force links on
the desktop.
* gscreen.c (panel_create_file_list): Do not use
GTK_DEST_DEFAULT_ALL for the drop site. Only use
GTK_DEST_DEFAULT_DROP, since we need to check motion ourselves.
(panel_clist_drag_motion): Do not allow dropping on the clist buttons.
(panel_clist_button_press): Do not assign the
panel->maybe_drag_start flag if the user clicked outside the clist_window.
* gdesktop.h: Removed old crud (desktop_icon_t, icon_t).
* gscreen.c (panel_create_file_list): Added GDK_ACTION_ASK to the
destination actions.
(panel_create_icon_display): Likewise.
(panel_create_tree_view): Likewise.
* gdesktop.c (desktop_drag_motion): If the user explicitly
requested action ASK, then do not make feedback show MOVE.
* gscreen.c (panel_widget_motion): Pass in all drag actions now
that Gtk handles button 2 by itself.
* gicon.h (gicon_image_to_name): Added prototype for
gicon_image_to_name().
* gicon.c (gicon_get_icon_for_file):
(gicon_get_icon_for_file_speed): Added a "directory" argument.
It is needed because the file_entry structure only contains the
pruned filename, and we need the complete name for the metadata
functions.
* gdesktop.c (desktop_icon_info_new): Pass the directory to
gicon_get_icon_for_file_speed().
* gpageprop.c (item_properties): Build the directory name and pass
it to gicon_get_icon_for_file_speed().
* gscreen.c: Do not #include "directory.xpm". Do #include "setup.h".
Removed unused function button_switch_to().
* gscreen.c (panel_fill_panel_icons): Pass the directory to
gicon_get_icon_for_file().
* gscreen.c (panel_create_tree_view): Allow button 2 to start the
drag as well.
(panel_clist_scrolling_is_desirable): Make both scrolling
thresholds consistent. Also, do not allow scrolling past the
correct limit.
(panel_icon_list_scrolling_is_desirable): Likewise.
(panel_tree_scrolling_is_desirable): Likewise.
(panel_clist_scroll): Do not allow scrolling past the correct limits.
(panel_icon_list_scroll): Likewise.
(panel_tree_scroll): Likewise.
* gdialogs.c (file_op_context_create_ui): OP_DELETE now has it's
very own dialog. whee.
* gscreen.c (panel_create_pixmaps): now we use dir-open.xpm
instead of the (apparently) ugly yellow one.
* gscreen.c (x_create_panel): chnaged padding on the Filter label
(do_ui_signal_connect): new view switching code. Toolbar now works
(go_home): new function -- takes one home
* gcmd.c (gnome_open_files): now you can open multiple files.
* glayout.c: layout changed some. moved run command.
commented out ftplink/mkdir command for now. gonna do mkdir
next. Why is the ftplink command needed?
* gscreen.c (panel_icon_list_drag_data_received): Do not update
contents if nothing was done (ie, the drop was cancelled).
(panel_create_file_list): Duh. Restore this, as, ahem, we dont
have banding selection on CList.
(panel_icon_list_select_icon): Open the new panel only on button
release.
(panel_file_list_select_row): New panel started on clist when you
press middle button.
(panel_create_file_list): Ahaha! I found that CList now has a
gtk_clist_set_buttion_actions. Go figure why we need this and why
it was implemented, but now buttons work as they should on clist.
* gscreen.c (panel_icon_list_drag_data_received): Do not update
contents if nothing was done (ie, the drop was cancelled).
* gdnd.c (gdnd_drop_on_directory): Do nothing if the files dragged
are on the same directory we are.
* gcmd.c (gnome_filter_cmd): Function filled in now. Actually
works (amazing!.) Next: put a history on it, and maybe an event
box for the label.
Also, moved delete file around -- apparently it's proximity to Close was
bothering people.