Sat May 16 02:29:51 1998 Tom Tromey * gdesktop.c (url_dropped): `exec' field of desktop entry now a vector. (dentry_execute): Likewise. (desktop_icon_remove): Likewise. (get_transparent_window_for_dentry): Likewise. (desktop_create_directory_entry): Likewise; also initialize exec_length. 1998-05-16 Jaka Mocnik * 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. Thu May 14 23:31:15 1998 Tom Tromey * gmain.c (session_save_state): Use "+" instead of "%s" in format specification. Free `argv'. 1998-05-14 Miguel de Icaza * 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. Thu May 14 02:02:56 1998 Norbert Warmuth * Makefile.in (EXTRALIBS): add @LINTL@ 1998-05-09 Miguel de Icaza * gtrans.c (set_window_text): draw pixmaps without transparency correctly. 1998-05-07 Miguel de Icaza * gscreen.c (panel_icon_list_realized): Add drag and drop support to the icon list view; 1998-05-06 Miguel de Icaza * 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. * gblist.c (blist_select_row): New widget derived from GtkClist. replace select_row and unselect_row with null functions, as the gmc code takes care of the rest. 1998-05-04 Miguel de Icaza * gdesktop.c (desktop_icon_drag_start): Do not attempt to use icons if we could not load the images for the icon. * gwidget.c (x_update_input): Keep the cursor always visible. * gview.c (view): Use a buttonbar widget. * gwidget.c (buttonbar_clicked): Provide a trivial implementation of the buttonbar that only responds to key sequences. * gmain.c (dialog_panel_callback): Call midnight_callback to get the main bindings working. * gdesktop.c (perform_drop_manually): Use p to walk the dropped data. This is an important bug fix. * gmain.c (idle_destroy_window), main.c: Session management now supports not showing a toplevel window (in case all of the windows were closed). 1998-04-30 Miguel de Icaza * gtrans.c (make_transparent_window): Put hack back. * gcache.c (image_cache_load_image): Federico spooted the problem: I have to duplicate my keys for the hash. * gmain.c (create_panels): Create one panel per directory specified. For some strange reason the code hangs if you start up more than one panel at once. This is not a gmc bug, it appears to be an Imlib/gtk/gdk interaction. I am for now creating one panel in the main program execution thread and the rest during the idle handler. (session_save_state): Added session management support. 1998-04-29 Federico Mena Quintero * gprop.c (gprop_general_new): Added an simple icon preview to the icon selector. 1998-04-29 Miguel de Icaza * gdesktop.c: Finish desktop_icon_remove implementation. * glayout.c (update_panels): GNOME specific Implementation of the update_panels routine. Tue Apr 28 06:52:24 1998 Norbert Warmuth * gcmd.c (gnome_open_terminal): Changed my_system(1,...) to my_system(EXECUTE_AS_SHELL,...) 1998-04-27 Miguel de Icaza * glayout.c (layout_panel_gone): Removed debugging information. Renamed "Panel" to "Window" to make it less confusing to users. Moved the "New window" from the "File" menu to the "Window" menu. * gmain.c (dialog_panel_callback): Walk the list of panels to determine to which panel the activated widget belongs. 1998-04-24 Miguel de Icaza * gwidget.c (x_create_radio): Fix the WRadio widgets. 1998-04-21 Miguel de Icaza * glayout.c (create_container): Add wmclass. 1998-04-16 Miguel de Icaza * gdesktop.c (desktop_reload): Show all of the widgets on a reload operation. * gscreen.c (x_panel_update_marks): Do only set the marks if the widget has been created * glayout.c (assign_other): Keep track of all of the opened panels. We were never removing them from the containers list. This fixes a number of problems. * gwidget.c (x_dialog_stop): Only call gtk_main_quit if this dialog did not inlcude the DLG_GNOME_APP flag, as those windows did not launch a gtk_main event loop. * gcmd.c: Try various terminal programs in the PATH before giving up * glayout.c: Unselect command is unselect_cmd, not select_cmd * gcmd.c (gnome_quit_cmd): Add quit confirmation. * gdesktop.c (perform_drop_manually): Check the type for the source file (directory/file) and perform the proper operation. Before this we always did a *_file_file operation. (perform_drop_manually): Use copy_dir_dir correctly (desktop_setup_default): Use copy_dir_dir correctly * gwidget.c (x_create_label): Remove debugging labels. * gscreen.c: Do not show the view/view unfiltered if the selectioned item is a directory. * gwidget.c (x_radio_toggle): Never commit non-compilable code. 1998-04-15 Miguel de Icaza * gwidget.c (remove_hotkey, x_create_radio): Radio buttons should not display the special Hotkey specificator. * 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. 1998-04-15 Federico Mena Quintero * gtrans.c (create_transparent_text_window): Destroy the cursor properly. 1998-04-14 Miguel de Icaza * gview.c (x_init_view): Initialize view->sadj. * gdesktop.c (start_desktop): use destkop_load instead of desktop_reload. (desktop_load): This reloads + shows every widget on the desktop_icons list. 1998-04-14 Federico Mena Quintero * gdesktop.h: Added extern declarations for the want_transparent_icons and want_transparent_text variables. * gtrans.c (set_window_text): Now we use the new global variables want_transparent_icons and want_transparent_text to decide how to paint the pixmap and mask. The want_transparent_* variables can thus be configured for the smartness/speed of your X server when using shaped windows. Fri Apr 12 02:40:41 1998 Norbert Warmuth * gwidget.c (x_create_input): return 1 if the widget has been initialized manually (there was no return value) (x_create_buttonbar): to few arguments to sprintf (button number was missing); return a value. 1998-04-08 Miguel de Icaza * gscreen.c (x_create_panel): Added back and forward buttons. I need a "Home" icon too. * gwidget.c (x_create_input): Make the selection if the input has not yet been touched. * gscreen.c (panel_action_open): If opening an item fails, try panel_action_open_with. * gview.c: Implement the viewer scrollbar. 1998-04-07 Miguel de Icaza * gscreen.c (panel_drop_data_available): Reload the panel contents upon a drop. * gmain.c (gnome_dlg_send_destroy): Hide the widgets just before they are going to get destroyed, to avoid the shutdown flickering. (x_destroy_dlg_start): New routine/hook invoked when the destroy has just started (x_set_idle): Cancel the idle handlers properly. * gwidget.c (x_create_check): Finish the checkbox implementation. * gdesktop.c (get_desktop_icon): Fix this routine: it was cretating a file name when the filename was not set properly. 1998-04-01 Marc Ewing * gscreen.c: Added #include 1998-03-31 Miguel de Icaza * gcache.c: Added an Image cache for all of the imlib-loaded images to avoid destroying/reloading the images. * gdesktop.c, gtrans.c: Use the image cache. 1998-03-24 Miguel de Icaza * gscreen.c (x_create_panel): Show the GnomeApp when we are done packing all of our information. * gmain.c (create_panels): do not show any of the windows yet. 1998-03-23 Miguel de Icaza * gscreen.c (x_fill_panel): Colors are properly displayed now. Use the clipped labels. * gcliplabel.c, gcliplabel.h: Derived label that does label clipping (it does not request the allocation for the whole string, but settles with whatever is provided in the size_allocation). 1998-03-23 Federico Mena Quintero * gtrans.c (create_transparent_text_window): Set the window's cursor to the normal top-left arrow. Mon Mar 23 01:40:35 1998 Norbert Warmuth * gtools.c (translate_gdk_keysym_to_curses): renamed KEY_BACKTAB to KEY_BTAB (the name ncurses uses) * Makefile.in: Install the icon-files and the layout-file from $srcdir. 1998-03-20 Federico Mena Quintero * gdesktop.c (icon_properties): * gpageprop.c (item_properties): Modified to accept dentry title changes as well. (item_properties): Fixed base and fname confusion in call to concat_dir_and_file(). * gprop.c (gprop_general_new): (gprop_general_get_data): Renamed to general from icon. The general Gprop now lets you enter the title and icon filename for a dentry. 1998-03-19 Federico Mena Quintero * gdesktop.c (icon_properties): Whoops, actually save the dentry. (post_setup_desktop_icon): Moved the icon positioning call outside of this function so that property-changed icons will not move on the desktop. * gdesktop.c (desktop_icon_context_popup): It is not necessary to set the menu position. (desktop_icon_context_popup): gtk_signal_connect_object_after to the menu items with gtk_widget_destroy as a callback so that we can destroy the menu widget appropriately. 1998-03-19 Miguel de Icaza * gscreen.c (display_mini_info): Implement mini status. 1998-03-19 Federico Mena Quintero * 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. Wed Mar 18 23:09:35 1998 Miguel de Icaza * gscreen.c (panel_file_list_select_row): Use control/shift click to add files to the selection. Wed Mar 18 22:32:53 1998 Miguel de Icaza * gscreen.c (panel_action_properties): Make Federico's page-properties code functional. * gpageprop.c: New file, implements most of the page properties on top of the gprop.c code. Wed Mar 18 20:35:45 1998 Miguel de Icaza * 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. 1998-03-18 Federico Mena Quintero * gscreen.c: Removed tests for the gprop stuff. (file_popup): It is not necessary to show the popup menu. * gprop.c (perm_group_new): (perm_owner_new): Fill the combo lists with users and groups, respectively. * 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. Tue Mar 17 22:40:36 1998 Miguel de Icaza * gdesktop.c (desktop_setup_icon): Lots of changes to accomodate dropping icons on the root window. (do_symlinks): Implement symlink action. (icon_delete, desktop_icon_context_popup): Implement icon context menus. only deleting an icon is working right now. * gscreen.c: Load the drag and drop icons from the installation directory. * Makefile.in (install_gmc): Install our icons. Tue Mar 17 02:38:37 1998 Miguel de Icaza * gdesktop.c (desktop_setup_default): Create a default desktop entry on the root window for the Home directory if not mc.desktop exists -yet- Get drops on the root window to work. Joy and hapiness! Tue Mar 17 00:43:50 1998 Tom Tromey * glayout.c (gnome_panel_about_menu): "About" item now a stock menu item. 1998-03-16 Federico Mena Quintero * gscreen.c (filter_item_activate): Make it convert the glob pattern to a regexp if appropriate. Sat Mar 14 17:13:26 1998 Miguel de Icaza * gmain.c (gnome_dlg_send_destroy): New signal handler for "delete_event". I return TRUE (ie, do not kill this window), and manually queue que destruction of this window. * gtools.c (query_dialog): Do not allow resizing; do not destroy the dialog ourselves, this is properly handled by dlg.c now (pack_button): Do not use the defaults: we do not want growing buttons; Fri Mar 13 16:01:28 1998 Miguel de Icaza * gwidget.c (buttonbar_clicked, x_create_buttonbar): Button bar widget implemented. * gtools.c: Implement the non-modal version of the message routine. * gview.c: Create a GnomeApp widget to contain the viewer. * gmain.c (xtoolkit_create_dialog): Add a new mode where the container window is a GNOME_APP window. 1998-03-13 Federico Mena Quintero * gscreen.c (x_select_item): Make it use GTK_VISIBILITY_FULL instead of a plain boolean value. * gwidget.c (x_listbox_select_nth): Likewise. * 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. Thu Mar 12 22:11:23 1998 Miguel de Icaza * gwidget.c (x_update_input): Use GnomeEntry widgets instead of the GtkEntry. * gwidget.c (listbox_select): Fix for the listbox selection with the mouse. (x_create_button): Use stock pixmaps. * gcmd.c: Moved all of the _cmd routines from glayout to this place. (save_panel_types): Provide GNOME implementation. * glayout.c: New and improved menu layout. Use stock pixmaps. 1998-03-12 Federico Mena Quintero * gmc-chargrid.c (gmc_char_grid_draw): Someone teach me how to subtract. Fixed a stupid offsetting bug. (update_region): Added clipping of region bounds. * gmc-chargrid.c: Changed the struct attr with pointers mess with something saner. Added an in_resize flag to avoid calling our internal signal handlers recursively. (gmc_char_grid_draw): Added proper draw handler for our case; the widget's window does not fill its allocation. (paint): New wrapper for update_region(); it converts window coordinates to row/column character coordinates. (gmc_char_grid_expose): Use paint(). 1998-03-11 Federico Mena Quintero * gmc-chargrid.c (update_strip): Doh. Fixed painting of background rectangles. (gmc_char_grid_expose): Fixed off-by-one errors in area calculation. Ripped off the code from gtkterm to do this :-) (free_attrs): New internal convenience function. Thu Mar 12 00:08:06 1998 Miguel de Icaza * gview.c (view_percent): Added status display. Wed Mar 11 22:35:02 1998 Miguel de Icaza * gwidget.c (entry_release): Now the WEntrys track the current selection.p (x_update_input): Repaint the widget after changing the position. * gscreen.c (x_fill_panel): Remember the selected item on the panel before filling it up, as gtk_clist emits a select_item signal when filling it up, which changes the current selection (and thus some routines that invoke the reload panel option fail). (create_popup_submenu): Implement context sensitive menus (regular files, and symlinks). (panel_realized): Use a different icon when we are dragging a group of files. (panel_artificial_drag_start): Add Elliot's Artificial drag start support. 1998-03-11 Federico Mena Quintero * gmc-chargrid.c (gmc_char_grid_get_size): New public function. (gmc_char_grid_put_text): New public function. It is the same as gmc_char_grid_put_str, but can take any arbitrary string plus its length. (gmc_char_grid_put_char, gmc_char_grid_put_str, gmc_char_grid_put_text): These functions now take a background pixel parameter --- the GmcCharGrid widget now supports fg/bg attributes. * gmc-chargrid.h: Changed colors field to attrs. * gmc-chargrid.c: New Character Grid widget for the file viewer. This is a very lean and fast widget for displaying a grid of monospaced characters. Just like a crippled-down terminal. Tue Mar 10 23:46:29 1998 Miguel de Icaza * 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 find out which directory receives the drop. * glayout.c: added: configure_box, configure_vfs (get_other_type): Return the correct value. 1998-03-10 Federico Mena Quintero * 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. * gtools.c (message): Added return NULL. This needs to be fixed. (translate_gdk_keysym_to_curses): FIXME: Replace KEY_BACKTAB by '\t' while KEY_BACKTAB is added somewhere else. (translate_gdk_keysym_to_curses): return -1 as last resort. * glayout.c (get_current_index): Add g_assert_not_reached() for fatal case. * gmenu.c (menubar_new): Cast g_menubar to unsigned long. * gwidget.c (x_create_input): Cast entry to GTK_OBJECT. * gkey.c (find_select_closure_callback): Fix = -> == typo. Tue Mar 10 00:10:32 1998 Miguel de Icaza * gscreen.c (panel_drop_data_available): Now drop support uses the new coords.x and coords.y fields from the DropDataAvailableEvent to find out which directory receives the drop. * gwidget.c (x_radio_focus_item): Add support for focusing radio buttons. Mon Mar 9 15:12:00 1998 Miguel de Icaza * gtools.c (translate_gdk_keysym_to_curses), dlg.c (dlg_key_event): Support for backtab. * gwidget.c: highlight properly the focused radio entry. * gmain.c (x_init_dlg): After setting up the X widget, set the Gtk focus to h->current; 1998-03-09 Federico Mena Quintero * gscreen.c (x_panel_select_item): Set the colors of the row. * gmain.c (xtoolkit_init): Changed gnome_init() to new version. (xtoolkit_init): Call gnome_init() properly. Also, return 0. Sat Mar 7 15:24:49 1998 Miguel de Icaza * gwidget.c (entry_click): Focus the entry on clicks. Fri Mar 6 20:50:19 1998 Miguel de Icaza * gmain.c (create_panels): New per-port variable, used to flush all of the pending X events. (x_set_idle): Implement idle functions, now the find command works properly. * gwidget.c (x_create_radio): Connect to the "toggled" signal to keep track of the radio button. (listbox_select): callback for the select and double click actions. (x_update_input): This can be invoked before the widget X resources have been allocated. Take care of this. (x_create_input): update the cursor position as well. (x_list_insert, x_create_listbox, x_list_delete_nth, x_listbox_select_nth): implement the Listbox widget. * gconf.h: New configuration options: PORT_HAS_PANEL_ADJUST_TOP_FILE and PORT_HAS_PANEL_RESET_SORT_LABELS 1998-03-06 Federico Mena Quintero * gmain.c (get_color): Make it use GdkColorContext correctly. * 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. Thu Mar 5 23:54:58 1998 Miguel de Icaza * gdesktop.c (drop_on_panel): New function; Used by the directory icons and by regular panels to support drag targets; * gscreen.c (panel_drop_data_available): Performs the drop action on a panel. It needs fixing, as the DropDataAvailabelEvent does not provide any information as to where the drop actually happened. (fixed_gtk_widget_dnd_drag_set, fixed_gtk_widget_dnd_drop_set): Only set the main window of the clist to be the source/target of the drag and drop code. The little square at the end did not make much sense as a drop/drag spot. 1998-03-04 Federico Mena Quintero * gmain.h: Added prototype for x_filter_changed(). Added #include "panel.h". * gconf.h (PORT_HAS_FILTER_CHANGED): New flag for conditional compilation. Wed Mar 4 22:43:00 1998 Miguel de Icaza * gtools.c (query_dialog): Rewritten to use the MC dialog/widget code. * gutil.c (my_system), acconfig.h: By default gnome will not have a subshell (at least for now) and will now exec everything asyncronously by default. * gscreen.c: Exactly what was I thinking when I used the g_panel_contents structure will remain a mistery for future programming psycologists. It was a huge mistake. * gdesktop.c: Use the new icon/text display routine from Federico. Tue Mar 3 21:03:52 1998 Miguel de Icaza * gmain.c (x_destroy_dlg): Call gtk_grab_remove when destroying the dialog. * gmain.c (x_focus_widget): Handle special case of toplevels. 1998-03-04 Federico Mena Quintero * gscreen.c: Some hackish changes to work around idempotence bugs in gtk_clist_select_row().