* gdesktop-icon.c : Attach a desktop_icon wmclass to the desktop
icons to allow even more wizardry with the desktop icons, mainly
to exclude them from window lists, don't decorate them, skip
desktops and other boring stuff.
* screen.c (panel_reload): Don't set panel->selected to zero here,
keep it's value if possible or set it to panel->count - 1 (I disliked
the jumping cursor when deleting files).
* 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.
* gdesktop.c (click_proxy_button_press): Use a nice arrow cursor
for rubberbanding.
(click_proxy_filter): Keep a firm jaw when the window manager dies
and thus the proxy window is destroyed.
(setup_desktop_click_proxy_window): Moved the proxy window
creation code to this function.
(click_proxy_property_notify): Handle PropertyNotify events from
the root window for when the proxy window changes. Now the window
manager can restart itself as it pleases and GMC will handle it
correctly.
Wheeeee! Desktop icons can be selected by rubberbanding. You
need Englightenment to do this, as so far it seems to be the only
WM with support for the _WIN_DESKTOP_BUTTON_PROXY property.
* gdesktop.c (click_proxy_filter): New event filter for button
presses and releases on the root window.
(click_proxy_button_press): New function to handle button presses
on the desktop.
(click_proxy_button_release): New function to handle button
releases on the desktop.
(click_proxy_motion): New function to handle rubberbanding motion
on the desktop.
(setup_xdnd_proxy): Flush the server after ungrabbing it.
(find_click_proxy_window): Flush the server after ungrabbing it.
(store_temp_selection): Stores the temporary selection to the
master selection, or viceversa. This is needed for dynamic
updating while the user rubberbands.
(update_drag_selection): New function to update the selection
while the user is rubberbanding on the desktop.
(icon_is_in_area): New function to see if an icon is inside the
rubberbanding area.
* gdesktop-icon.h: Added fields for querying the icon and text
position and size.
* gdesktop-icon.c (desktop_icon_reshape): Set the position and
size fields as computed for layout.
* gdesktop.c (editing_started): Grab on the window for the
icon, not on the canvas, so we can properly detect
clicks elsewhere.
(icon_button_release_after): When the user stops selecting,
regrab the pointer.
* 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)
* gcmd.c: #include "../vfs/vfs.h"
* gdesktop.c (setup_icon_dnd_actions): Moved the code that calls
gtk_drag_source_set() for an icon here.
(editing_started): Temporarily disable drags while the icon's text
is being edited.
(editing_stopped): Re-enable DnD from the icon once editing has
stopped.
* gcmd.c: #include "../vfs/vfs.h"
* gdesktop.c (setup_icon_dnd_actions): Moved the code that calls
gtk_drag_source_set() for an icon here.
(editing_started): Temporarily disable drags while the icon's text
is being edited.
(editing_stopped): Re-enable DnD from the icon once editing has
stopped.