* gdesktop.c (desktop_icon_info_place): Doh, do not place icons
past the edge of the *whole* screen :-)
(dnd_press_x dnd_press_y): New variables to store the cursor
hotspot for DnD icons. Moved these over from the
desktop_icon_info structure, as it does not make sense to have
this inside every icon.
(button_press): Use dnd_press_x and dnd_press_y.
(drag_begin): Likewise.
(drop_desktop_icons): Use dnd_press_x and dnd_press_y to fix the offsets.
(drag_data_received): Fix the proxy window offsets for all types
of targets.
(drop_desktop_icons): Snap the coordinates as appropriate.
* gdesktop.c (drop_desktop_icons): New function to perform a drop
from desktop icons to the desktop. It effectively moves the icons
around.
(desktop_icon_info_place): Do not place the icons past the edge of
the screen.
* gdesktop.c (file_entry_from_file): Finished implementing
file_entry_from_file().
(struct desktop_icon_info): Removed the `type' field. We now stat
the file when needed to figure out the file type.
(desktop_icon_info_event): Test whether the file is a directory by
ourselves, and if it is, open a new panel for it.
(drag_data_get): Generate the uri-list for internal desktop icon
drags as well.
* Makefile.in (codedirs): Dropped xv and tk ports from the
distribution. include idl directory.
1998-12-01 Miguel de Icaza <miguel@nuclecu.unam.mx>
* configure.in (slang_use_system_installed_lib): Define slang
here, to avoid having this on LIBS.
1998-11-26 Herbert Valerio Riedel <hvr@hvrlab.ml.org>
* gtkedit.c: changed occurence of 'va_list *ap' to 'va_list ap'
Thu Nov 26 12:20:06 1998 Pavel Roskin <pavel_roskin@geocities.com>
* config.h.in: Removed from CVS, added to .cvsignore
* acconfig.h, macros/curses.m4, src/xcurses.c, src/tty.h,
configure.in:
* gscreen.c (load_imlib_icons): Make it use the new gicon files.
* gicon.c, gicon.h: New files: they keep an image cache and
provide the right icon to use based on the filename. They use the
GNOME metadata to fecth the "icon-filename" and "icon-inline-png"
keys.
* gdialogs.c (file_mask_dialog): Commented the help messages until
the warnings are figured out.
* gdesktop.c (desktop_icon_info_new): Connect the signals for DnD
so that we can drag icons from the desktop.
(drag_begin): New function to set the drag cursor for icons on the desktop.
(button_press): New function that stores the hot spot position for
DnD cursors.
(drag_data_get): New function to fetch the URI-list of selected icons.
* gdialogs.c: Fixed some includes.
* gdesktop.h: Removed the DnD target enum from here, since it is
specific to each submodule.
* gdnd.h: Moved the DnD target enums to here. Added a new
TARGET_MC_DESKTOP_ICON.
* gdesktop.c (get_icon_snap_pos): Fixed icon snapping; the
coordinates not being updated correctly.
* gscreen.c (panel_drag_data_get): Free the uri list; it was being leaked.
* cmd.c, tree.c: Updated to the new file.c api.
* file.c: (copy_file_file, copy_dir_dir, move_file_file,
move_dir_dir): Updated to work with the new updating stuff.
* setup.c: New configuration option to compute the totals to be
transfered.
* file.c (compute_dir_size, panel_compute_totals): New routines to
compute the total ammount of information that is going to be
transfered.
* gdesktop.c (load_desktop_icons): Added arguments that specify
where to place the newly-created icons. This needs some tweaking still.
(reload_desktop_icons): Now takes arguments for the position of
the new icons.
(drag_data_received): Pass in the drop position to reload_desktop_icons().
* gscreen.c (panel_tree_drag_motion): Added missing variable declaration.
* gdesktop.c (load_desktop_icons): Added an incremental flag that
specifies whether icon creation is unconditional regardless of
whether there is an icon for a file or not.
(reload_desktop_icons): Use the incremental flag in load_desktop_icons().
(drag_data_received): Reload the desktop incrementally, to avoid flicker.
(desktop_icon_info_new): Use mc_lstat(), not mc_stat(). We do
want to read symlinks, even dangling ones, if they exist.
(load_desktop_icons): While we are reading the desktop directory,
first place all the icons that have their metadata icon-position
set, and build a list of the ones that don't. *Then* place
those. This fixes overlapping icons on weird situations.
* directory.xpm: Removed bogus garbage. There was a stale pixmap here.
* gdesktop.c (setup_desktop_dnd): Allow for GDK_ACTION_ASK as well.
* gscreen.c (panel_widget_motion): The action argument to
gtk_drag_begin() is a mask of possible actions, not a single action.
* gdesktop.c (drag_data_received): Only reload the icons if the
drop was successful.
* gscreen.c (panel_create_icon_display, panel_create_file_list):
Hook up to drag_begin and drag_end events.
(panel_tree_drag_motion): Either queue a scroll on the tree, or
queue an open-directory event.
(panel_tree_scroll): Scroll the tree when the drag pointer is in
one of the boundaries of the tree.
(panel_tree_scrolling_is_desirable): new function to figure out if
it is a good plan to scroll the tree view instead of opening it.
(panel_chdir): Do not sync with the tree when we are in the middle
of a drag and drop operation.
(panel_drag_begin, panel_drag_end): New functions to keep track
of the dragging operations.
* gdesktop.c (setup_desktop_dnd): New function to set up drops
to the root window.
(setup_xdnd_proxy): Function by Owen Taylor to set up a DnD proxy
window.
(drag_data_received): Function to handle drops on the root window.
(desktop_destroy): Destroy the DnD setup.
(reload_desktop_icons): New function to reload the desktop.
* gscreen.c (drag_types, drop_types): Removed url-list; only
uri-list should be there.
* gdesktop.h: Removed TARGET_URL_LIST from the DnD enumerations.
* gtkdtree.c (gtk_dtree_do_select_dir): Made static, as it is for
internal use only.
Fixed a little bunch of compiler warnings.
* gscreen.c (x_fill_panel): Use gtk_dtree_select_dir(), not
gtk_ctree_do_select_dir().
* gpopup.c (gpopup_do_popup): Fixed incorrect assertion and
actually create the menu (doh).
(gpopup_do_popup): Do the same magic as in gnome-popup-menu to
fetch the item that was activated in the menu. Keep this code out
of reach of children.
(fill_menu): New function to fill the menu using the
gnome-popup-menu magic for fetching the activated menu item.
Removed ifdef'ed code.
* gscreen.c (tree_drag_open_directory, panel_tree_drag_motion,
panel_tree_drag_leave): Drag and Drop support routines for the
tree to auto-expand the tree when the user stays still on top of a
directory.
* configure.in (slang_use_system_installed_lib): Define slang
here, to avoid having this on LIBS.
1998-11-26 Herbert Valerio Riedel <hvr@hvrlab.ml.org>
* glayout.c (file_menu): Use view_cmd and view_simple_cmd in the
menu instead of panel_action_view and
panel_action_view_unfiltered, respectively.
* gpopup.c (create_regexp_actions): Create the menu items using
gnome-app-helper, for visual consistency.
(create_actions): Likewise. Also, fixed S_ISLNK() confusion.
(get_label_text): Extract the label from the GnomeUIInfo item in
an ugly way.
- GNOME edition now compiles without any trace of the text mode
dependencies.
- We no longer link with libraries we do not use (crypt, gpm), this
fixes the recent bug reports.
- More tree updates, enhancements.
Miguel.
* gscreen.c (panel_switch_new_display_mode): Destroy the old
widget. Add the list view to the proper table.
* glayout.c: Remove the exit menu option.
* gtree.c (gtk_dtree_contains): New routine used to avoid
duplicate entries in the tree display.
* gwidget.c (x_update_input): Use gtk_editable_changed on the entry.
(x_create_listbox): Fix more CList api change.
* gscreen.c (CLIST_FROM_SW): Adapt to new GtkScrolledWindow
inheritance.
* Makefile.in (OOBJS): Add filegui.o back until the GTK-specific
filegui is written.
* gdesktop.c (check_window_in_one_panel): Provide better error
messages here for debugging purposes.
Disable stubs for filegui.c until they are actually implemented.
I need to debug stuff.
* gdnd.c (find_panel_owning_window): Use the new
gtk_drag_get_source_widget function to find out reliably if the
drag source happens to be in this application.
* gscreen.c (x_create_panel): Set the usize for the ministatus
label to be (0, -1), this means: do not request any horizontal
space, use any vertical space given.
Put the ministatus inside an hbox, and use
gtk_container_set_resize_mode in this hbox to stop any queue
events from being propagated up in the hierachy of widgets
This kills all of the CList/GnomeIconList/Scrollbar/Toolbar
flickering now.
* gscreen.c (x_create_panel): Set the usize for the ministatus
label to be (0, -1), this means: do not request any horizontal
space, use any vertical space given.
Put the ministatus inside an hbox, and use
gtk_container_set_resize_mode in this hbox to stop any queue
events from being propagated up in the hierachy of widgets
This kills all of the CList/GnomeIconList/Scrollbar/Toolbar
flickering now.
* gdesktop.c (desktop_icon_info_event): Run the popup menu for the
icons in the desktop.
* gpopup.[ch]: New files that take care of the popup menus for
files in the desktop and in the panels.
* Makefile.in: Added gpopup.[ch] to the list of sources.
* gdesktop.c (desktop_icon_info_place): Save the icon position
when it is moved.
(desktop_destroy): Removed the save_icons_pos() function and do
not invoke it from desktop_destroy().
* gdesktop.c: Put in a bunch of stubs for the functions in
filegui.h. These will be removed as the dialogs get
custom-written for Gnome.
* gmetadata.[ch]: Changed the function names to "gmeta_*".
* gscreen.c (CLIST_FROM_SW): Use scrolled_window->child, as
viewport is obsolete.
1998-11-23 Federico Mena Quintero <federico@nuclecu.unam.mx>
* dlg.c (dlg_try_hotkey): Removed unused declaration of input_event.
(dlg_key_event): Return 1 if handled the tab key.
* filegui.h: Added prototypes for file_progress_show_{source,target,deleting}().
* Makefile.in (OOBJS): Do not link ../src/filegui.o. GMC does not
link right now, but I guess I'll add stubs until we finish with
the dialog boxes.
* gdnd.c: #include <sys/types.h>
* Makefile.in (checklinks): Fix sourcelinks -> maksourcelinks typo.
Ok, finally splitted the GUI code that dealt with the file operations into
a separate file. It is now possible to write a native Gtk version of this.
Until the Gtk-native version is done, the code in mc/gnome/ is linking with
filegui.c.
Miguel
* panel.h (WPanel): Instead of the "#ifdef GNOME" mess in the
WPanel structure, we now have a single opaque pointer to UI data,
called port_ui. GUI stuff specific to each port should be here.
This is a work in progress.
* Makefile.in: Removed gtrans.c from the list of sources.
* gdesktop-icon.c: #ifdef cleanups.
* gscreen.c (panel_create_file_list): Doh. Return the scrolled
window, not the clist.
* gdnd.c (get_action): Implement the DnD actions menu.
1998-11-10 Federico Mena Quintero <federico@nuclecu.unam.mx>
* setup.c: Removed the icons_snap_to_grid and
want_transparent_{icons,text} options.
1998-11-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdnd.c: New file that handles all the DnD stuff. Mainly used to
clean up gdesktop.c.
* gscreen.c (panel_icon_list_drag_data_received): Use
gdnd_drop_on_directory().
(CLIST_FROM_SW): Added this macro to fetch the clist from the
scrolled window in panel->list.
(panel_create_file_list): Create a scrolled window and put the
clist inside it. This is required per the new clist API.
(panel_configure_file_list): Use the scrolled window's adjustment.
(panel_file_list_size_allocate_hook): Use the scrolled window
instead of the clist.
(panel_file_list_compute_lines): Use the scrolled window instead
of the clist.
(panel_file_list_configure_contents): Use the scrolled window
instead of the clist.
(panel_create_file_list): Do the DnD setup here, not in the
realization callback.
(x_create_panel): Do not realize the panel explicitly.
(panel_create_pixmaps): Create the pixmaps using imlib instead of
Gdk.
* gdesktop.c: Now desktop icons are stored in the layout_slots
array. We need to know which icons are in which slots.
(unselect_all): Use the layout_slots array.
(desktop_icon_info_place): Append the icon to the list in the
proper slot.
(desktop_icon_info_new): Initialize the position and slot fields
in the desktop icon info structure.
(desktop_icon_info_free): Remove the icon from its slot.
(desktop_destroy): Destroy the layout slots and the icons
properly.
(remove_from_slot): New convenience function to remove an icon
from the slot it is in.
(get_icon_snap_pos): Do a bit nicer snapping by really using the
closest slot.
Added a last_selected_icon variable to keep track of the icon that
was last selected, for shift+click selections.
(select_icon): Finish selection semantics and clean up. Now it is
nice and simple and complete.
(select_range): New function that handles range selections.
* gdesktop-icon.h (DesktopIcon): Added a child item for stippling
the icon when it is selected.
* gdesktop-icon.c (desktop_icon_select): Show/hide the stippling
as appropriate.
* gdesktop.c (desktop_icon_info_event): Handler for events on
desktop icons.
(select_icon): New function that handles icon selection based on
mouse clicks and modifier keys.
* gdesktop.c (struct desktop_icon_info): Added a type field to the
structure. It specifies the type of icon (file, directory), and
is used to determine the DnD and menu behavior.
* gdesktop.c: We are now using the new desktop icon code. It is
not yet complete, but what is there does work. We have icon
creation, auto-layout and snapping. Next step is drag and drop
and popup menus.
* glayout.c: #ifdef out the stuff that uses the old desktop code.
I will replace it gradually.
* gmain.c: Likewise.
* gscreen.c: Likewise.
Documentation update.
1998-10-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
* fish.c (command): Replace vnsprintf with g_strdup_vprintf. This
is both safe and more correct, as there is no limit on the
pathname.
* ftpfs.c (command): Same as above.
* util-alone.c (print_vfs_message): Same as above.
1998-10-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
* layout.c (print_vfs_message): Use g_snprintf instead of
vnsprintf.
* gdesktop-icon.c (create_window_shape): Use shaped icons only
when the user has selected them.
(desktop_icon_reshape): New public function to recompute the shape
of the icon. This should be used when the global
desktop_use_shaped_icons flag changes.
Added documentation comments to the public functions.
* gdesktop.c (desktop_icon_set_position): Do not lower the
window. The gnome-compliant wm will know what to do with windows
on the Desktop layer.
(post_setup_desktop_icon): Likewise.
* desktop-icon.c (create_window_shape): Fetch the mask of the
image "by hand", as we cannot rely on the canvas item having
created it yet.
* desktop-icon.c (desktop_icon_realize): Doh. We need to
initialize the gnome_win_hints before we set any of the hints.
1998-10-21 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdesktop.c (create_desktop_icon): Renamed from
my_create_transparent_text_window. Now uses the DesktopIcon
widget for its work.
(get_desktop_icon_for_dentry): Renamed from
get_transparent_window_for_dentry. Uses the DesktopIcon widget.
(get_desktop_icon_for_di): Renamed from
get_transparent_window_for_di.
(desktop_icon_properties): Do not size_request the icon, since now
we can get its dimensions directly from the DesktopIcon structure.
* desktop-icon.[ch]: New file that takes care of desktop icons.
It provides the spiffy widget that is used for them.
* Makefile.in: Added desktop-icon.[ch] to the list of sources.
MC should use Automake, I think.
new DnD. Boy, is it cute.
Question: should I use the default icon for DnD provided by Gtk+
or use the old icons I have? the old icons are a bit more sexy.
Miguel.