* 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.
* gscreen.c (x_reset_sort_labels): Various fixes to fix some of my
recent changes. I bet Jonathan found that things were not quite
working. Sorry for the previous untested changes.
This also fixes the bugs reported on gnome-list regarding the
CList problems. This is the correct fix (basically, we were using
a CList that was configured in one way, even if the display format
had changed. Now, the CList is kept in sync with the format by
calling a routine that somehow got dropped during some recent
changes).
* gtools.c (query_dialog): Simplified.
* gcmd.c (gnome_sort_cmd): pretified
(gnome_select_all_cmd): New command -- selects all files (in
theory).
* glayout.c: rearrange the edit menu some.
* gscreen.c (x_create_panel): new icon view icons -- brief and
custom.
* gscreen.c (panel_fill_panel_list): Assertion that will pin point
if a CList gets out of sync with the panel->format.
1999-01-01 Momchil 'Velco' Velikov <velco@fadata.bg>
* gscreen.c (panel_fill_panel_list): NULL terminate the column
array. This is strange, as it should not need the ending NULL.
1999-01-01 Jonathan Blandford <jrb@redhat.com>
1998-12-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdesktop.c (desktop_icon_delete): New function, used for
dicon_delete.
(load_desktop_icons): Implemented the incremental reloading of
desktop icons. This should make the code much nicer.
(reload_desktop_icons): Call x_flush_events to force a display at
that point.
* gpopup.c (dicon_delete): Implement this operation.
(desktop_icon_execute): Use the existing implementation for
launching desktop icons instead of a new hacked up version
(desktop_icon_actions): Until copy/move is implemented, do not
even list them to the user.
* gdesktop.c (create_desktop_dir): No trashcan setup until it
works.
* gscren.c (panel_widget_motion): Use button 2 for dragging and
asking.
even recognize it.
1998-12-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdialogs.c (create_op_win): Remove second spurious packing.
(create_op_win): OP_MOVE uses the same stuff OP_COPY does. Fix
this.
(file_progress_show_target): More compliant to the original
functions.
(file_progress_show_source): More compliant to the original
functions.
* gdesktop.c (create_desktop_dir): Fix mem leak.
Miguel.
* gscreen.c (panel_tree_drag_motion): Doubled timeout
for autoexpand - reducing opening unwanted directories.
(This, and auto-expand itself need to be configurable.)
* gscreen.c (tree_drag_open_directory): Use
gtk_ctree_expand() not gtk_ctree_expand_recursive,
which increases confusion and could be
_vvveeerrrryyyy_ expensive. (/afs ?)
* gscreen.c (panel_tree_drag_leave): Fixed up
signature - "drag_leave" has no x,y.
* gscreen.[ch] (panel_tree_check_auto_expand): When
we've expanded rows during a drag, collapse them
again when the drag leaves that row. We try to
collapse without changing the position of the current
row on the screen.
* gtkdtree.c (gtk_dtree_destroy): Remove timer upon
destruction to be safe. (Should this, and
dtree->timer_id itself be in gscreen.c instead?)
* gscreen.c (panel_tree_drag_leave): Change == to !=
so that timeouts are properly removed.
* gtkdtree.c (gtk_dtree_do_select_dir): fixed a little bug --
caused a segfault.
* gscreen.c (x_create_panel): More changes. The toolbar is moved
to a gtk_toolbar, and is movable. The entry will be put in it's
own toolbar, too.
(panel_create_cwd): For now, hardcode the usize of the entry
widget. Later on, have it expand (when toolbar supports it)
* 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.
* 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.
* 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.
* 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: 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: 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: 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.
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.
MC now depends on glib (currently only the assertions are used).
VFS structure declaration fixes.
Uses the new icon list (it is dog slow, need to fix this tonight at home).
* gscreen.c (display_mini_info): Removed calls to
gtk_clip_label_set() hack, since its cut-n-paste code didn't work
with new GTK's. If excessive resizes are a problem, they can be
solved by adding an adjustment around the label, and calling
gtk_container_set_resize_mode().
1998-05-22 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gwidget.c (x_create_input): Disable the use of the GNOME entries
for now, as they are very slow. We need to figure out what is
wrong with this.
With this change, dialog boxes close quickly instead of taking
ages to close.
* gscreen.c, gdesktop.c (file_popup_add_context, file_popup):
Share the context menu code in gdesktop.c and gscreen.c. The
desktop pop up menus now include all of the stuff that would have
appeared in the Panel.
* gdesktop.c (desktop_icon_remove): Remove the file associated
with this desktop entry if it is on the ~/desktop directory.
- We now provide both url:ALL and file:ALL drag types. This
allows applications that are not vfs-aware (all of them
right now :-) to work even if the files dragged are from a
remote site.
If the files are remote, and the target only accepts
file:ALL, a temporary file is created (or files, if multiple
files are dragged) and the names of the temporary file names
are transfered.
- Added ABOUT-NLS file :-)
Miguel.
* gtrans.c (set_window_text): Made it use the new
GnomeIconTextInfo functions.
1998-05-18 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gscreen.c (panel_create_icon_display): Set some good separator
characters for the file icon list.
* gpageprop.c (item_properties), gprop.c: Add executable editing
(command, and terminal). Save the dentry after modification
1998-05-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gprop.c (change_icon): Test for gp, as the combobox emits the
"changed" signal when shutting down. Great.
* gdesktop.c (desktop_reload): Missing mc_closedir
(desktop_setup_icon): Fix memory leak.
(get_desktop_icon): Fix memory leak.
(desktop_create_directory_entry): Set the size of the exec
vector.
(desktop_create_launch_entry): Same.
We now create launch entries instead of trying to support
regular dropped stuff on the desktop, this makes things easier and
more consistent.
1998-05-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
* ext.c: Memory leak fixed.
* gscreen.c (create_popup_submenu): fixed bug which caused it to require
0 instead of 1 marked files for F_SINGLE file_actions.
* gscreen.c (file_popup): first item in the menu displays "..." when
multiple files are selected.
* gtrans.c (create_transparent_text_window): Removed the hack to
lower the window on exposes. Guess what happens when you have two
icons on the same spot.
We now just need to get some nice icons.
I am also revamping a little the toolbar, to have a switch to
icon mode and switch to listing mode icons. To make people
happy. More on this tomorrow.
Miguel.
Really, you really need to:
1. Let the drag source window act as a drag target.
2. Let the drag shapped window re-enter the source window.
You have to fight with the shaped window to drag it
inside the origin window.
Miguel.
1. My icons suck.
2. Keyboard handling is not finished.
3. Save current-mode, load current-mode is not
implemented yet.
4. Listing mode is not working, as I have hardcoded
the icon view for now.
5. Will finish this tomorrow. Not much is missing.
6. No, this is not the final implementation.
7. Yes, later I will put some scheme for using
more icons as discussed in the ethernal "Re: Icons"
thread.
Miguel.
1998-05-07 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gscreen.c (panel_icon_list_realized): Add drag and drop support
to the icon list view;
1998-05-06 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gscreen.c (panel_fill_panel_icons): New function: Fill up the
icon list.
(x_create_panel): Change in the approach: we create both of the
widget views at creation time and we now carefully show every
component. I attach everything to the table, but not necesarly
show it.
panel, the old way of using it was an historic relic.
- This now works properly with the GNOME edition.
- Finished/fixed the implementation of the desktop-remove-icon
functionality.
- Raster's new multi-ok window. For some reason this is not getting
loaded. I am compiling gdb 4.17 now, as it is better for egcs
output.
Miguel.
with with this commit. This also addresses a bunch of the comments
from the status.shtml from DrMike.
Miguel.
1998-04-15 Miguel de Icaza <miguel@nuclecu.unam.mx>
* screen.c (GT): Assign two spaces for the minimum size of the
"type" field for the GNOME edition. This gives some extra space
for the icon that gets displayed.
* dlg.c (remove_widget): New function: used to remove a widget
from an existing Dlg_head;
(destroy_widget): Destroy a specific Widget.
(add_widgetl): Extended to deal with the fact that a running
Dlg_head can become empty.
* panelize.c (l_call): Update the input line every time the user
selects the entry with the mouse (pretty common in the gnome
edition).
* hotlist.c (add_new_group_input): Removed an extra field that was
causing problems.
* find.c (find_parameters): Tree button is gone for gnome until we
get the tree function working on gnome.
* cmd.c (save_setup_cmd): Per Elliot's suggestion, do not pop up a
dialog box to inform the user about the saved setup.
1998-04-15 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gcmd.c (gnome_close_panel): Implement the close-the-panel
functionality.
* gscreen.c (x_panel_destroy): Implement the gnome mode way of
destroying the panel.
* gview.c (view_status): Add cacheing of the information status,
to avoid excessive flicker. It would be better if GtkLabel did
not flicker though.
(scrollbar_moved): Scroll correctly. We now use
view_move_backward and view_move_forward to adjust the scrollbar
contents. This displays the scrollbar correctly.
* gwidget.c (x_listbox_select_nth): This may be invoked before the
widget has been created, work around this problem.
* gscreen.c (show_dir): Set the title bar for the window to the
current directoy. Reported by both Mike and Elliot.
* layout: Updated to the new hotlist dialog box.
- Double click should work.
- Dragging to other panels shoudl work
- Scrollbar in the viewer
- Entry widgets get their text selected at startup
- Prompts for command if default action does not exist for a filename
- Updated spanish translation.
Plus some other bugs I fixed.
Miguel
- Nicer dialog destruction (no flicker)
- refresh of panels after a drop.
- Pause after run is gone in the gnome edition.
- Improved layout for options dialog box.
- Checkbox widgets are implemented, they now work.
Miguel.
* gdesktop.c (get_transparent_window_for_dentry): New function,
creates the proper transparent icon window for a dentry.
(post_setup_desktop_icon): New function, does post-setup stuff for
a desktop icon (setting it as a drop target, positioning it, etc.).
* gpageprop.c (item_properties): Now the dentry parameter is a
desktop_icon_t instead.
We now return a bitmask that indicates what stuff changed. The
caller can use this information to decide what to update, repaint, etc.
* gdesktop.h: Moved the icon_t and desktop_icon_t structures here.
* gpageprop.c (item_properties): Insert icon control if appropriate.
* gprop.c (gprop_icon_new):
(gprop_icon_get_data): Renamed from gprop_dir_*().
* gscreen.c (panel_action_properties): Re-reads panel only if necessary.
*gpageprop.c (item_properties): now returns TRUE if something got
changed, FALSE otherwise. This should be used to decide whether
to re-read the panel or not.
* gpageprop.c: #include "../vfs/vfs.h".
#include "dialog.h".
* gprop.c (gprop_dir_new):
(gprop_perm_new):
(gprop_general_new): Connect to the destroy signal of the toplevel
widget and destroy the Gprop structure on the callback.
* gdesktop.c (desktop_create_launch_entry): Support for the "Drop"
target in mc.ext now.
* Add support for dragging the icons on the desktop.
(desktop_icon_make_draggable): new function.
(drop_from_event): simplify.
(my_create_transparent_text_window): Get the motion notify event.
(drops_from_event): create a vector based on thge drop event.
(drop_cb): splitted, call url_drop for regular drops, otherwise it
is a icon drop.
(artificial_drag_start): new routine, used now by gscreen.c and
gdesktop.c
(drop_on_directory): Check result value of operation.
(desktop_icon_set_position): sane interface.
(stop_desktop): Flush all of our state to disk.
* gprop.h: New files gprop.[ch]. These create the property pages
for desktop entries.
* Makefile.in: Added gprop.[ch] to the rules.
* glayout.c: Put gnome_about_cmd as a callback for the About menu item.
* gscreen.c (filter_item_activate): Make it convert the glob
pattern to a regexp if appropriate.
1998-03-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* util.c (convert_pattern): Now the internal buffer is malloc()ed
instead of being static. This is required for long patterns.
(regexp_match): Free the pattern after calling convert_pattern().
* file.c (file_mask_dialog): Free the source_mask after calling
convert_pattern().
* gscreen.c (filter_items): New global variable full of filters.
Please, someone fill in the regexp parts, as I was too lazy to do
them :-)
(panel_create_filter): Now the filter has a very nice button that
pops up a menu for selecting the filter.
Today:
- New Menu layout! Weeee!.
- More mc commands exposed to the GNOME edition.
- Use gnome stock pixmap buttons.
- Use gnome stock for the menus.
- Now it is possible to quit the program :-)
- Various other bits.
If you can test it, I would appreciate it.
-Miguel.
Context menu rearranged
Removed dead code
Shapped drag and drop
Different drag and drop icons depending on single/multiple drags
Artificial dnd is here (Thanks Elliot!)
cwd displays something interesting
Beginning of the internal viewer status display.
-miguel.
is enabled; virtual fs setup dialog box is up; save setup; mkdir
link command is hossed. It is more than hossed for some stoopid
reason, the thing is selecting the first file in the panel
just after I talked to it. No matter how argumentative I get
with the code. Have to fix next.
Commit the bits I forgot to commit yesterday.
-miguel.
* gscreen.c (panel_file_list_size_allocate_hook): Now we
connect_after to the size_allocate signal and block the handler.
Things are still not perfect, though.
* gscreen.c
* gscreen.c (x_adjust_top_file): We no longer adjust the top
displayed filename.
(panel_build_selected_file_list): Fix for the transfered data.
(panel_drop_data_available): Now drop support uses the new
coords.x and coords.y fields from the DropDataAvailableEvent to
* gscreen.c (panel_create_filter): The filter control is now a
nice GnomeEntry. It does not work due to gmc trapping key events;
I'll look into it tomorrow.
(internal_select_item): Fixed broken behavior. Now uses GtkCList properly.
default_filters: new structure with pre-defined glob patterns.
This is actually broken, because it will only work when
easy_patterns is enabled. I have to figure a way to make it work
with regexp mode as well.
- Layout file is now installed and used properly. That means
that you can actually run the code.
- Buttons actually work in the GtkTed and the regular use
thanks to GrossHack(tm).
- File operations are working! Weee! Copy and Move work as
well as the warning dialog boxes for all kind of stuff;
- Progressive display is pretty cool, you have to see it.
- Dragging files to desktop icons now allows you to copy/move
(supported both the remove and local cases, with the obvious
optimizations).
Still missing:
- Using Elliot's shaped windows for dnd.
- Allowing the arbitrary placement of desktop icons by dnd.
- dropping files into .desktop files.
- drop support on the panels (right now they only work right
as drag sources).
Weeeeeee! Total excitement. Total and absolute.
Miguel.