mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-09 13:02:01 +03:00
Lots of usability changes for the desktop.
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.
This commit is contained in:
parent
94d3dbac8b
commit
d24269087f
@ -1,5 +1,26 @@
|
|||||||
1998-12-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
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.
|
||||||
|
|
||||||
|
|
||||||
* gscreen.c (panel_create_file_list): Use a notebook instead of
|
* gscreen.c (panel_create_file_list): Use a notebook instead of
|
||||||
the hack I was using before for switching the panel contents.
|
the hack I was using before for switching the panel contents.
|
||||||
|
|
||||||
|
118
gnome/gdesktop.c
118
gnome/gdesktop.c
@ -34,6 +34,7 @@
|
|||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
#define DIR_H_INCLUDE_HANDLE_DIRENT /* bleah */
|
#define DIR_H_INCLUDE_HANDLE_DIRENT /* bleah */
|
||||||
#include "dir.h"
|
#include "dir.h"
|
||||||
|
#include "file.h"
|
||||||
#include "gdesktop.h"
|
#include "gdesktop.h"
|
||||||
#include "gdesktop-icon.h"
|
#include "gdesktop-icon.h"
|
||||||
#include "gicon.h"
|
#include "gicon.h"
|
||||||
@ -129,7 +130,6 @@ static int click_dragging;
|
|||||||
|
|
||||||
|
|
||||||
static struct desktop_icon_info *desktop_icon_info_new (char *filename, int auto_pos, int xpos, int ypos);
|
static struct desktop_icon_info *desktop_icon_info_new (char *filename, int auto_pos, int xpos, int ypos);
|
||||||
static void desktop_icon_info_free (struct desktop_icon_info *dii);
|
|
||||||
|
|
||||||
|
|
||||||
/* Looks for a free slot in the layout_slots array and returns the coordinates that coorespond to
|
/* Looks for a free slot in the layout_slots array and returns the coordinates that coorespond to
|
||||||
@ -291,8 +291,40 @@ icon_exists (char *filename)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GList *
|
||||||
|
icon_exists_in_list (GList *list, char *filename)
|
||||||
|
{
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
for (l = list; l; l = l->next){
|
||||||
|
struct desktop_icon_info *dii = l->data;
|
||||||
|
|
||||||
|
if (strcmp (filename, dii->filename) == 0)
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads the ~/Desktop directory and creates the desktop icons. If
|
* Returns a GList with all of the icons on the desktop
|
||||||
|
*/
|
||||||
|
GList *
|
||||||
|
desktop_get_all_icons (void)
|
||||||
|
{
|
||||||
|
GList *l, *res;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
res = NULL;
|
||||||
|
for (i = 0; i < (layout_cols * layout_rows); i++)
|
||||||
|
for (l = layout_slots [i].icons; l; l = l->next){
|
||||||
|
res = g_list_prepend (res, l->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reads the ~/desktop directory and creates the desktop icons. If
|
||||||
* incremental is TRUE, then an icon will not be created for a file if
|
* incremental is TRUE, then an icon will not be created for a file if
|
||||||
* there is already an icon for it, and icons will be created starting
|
* there is already an icon for it, and icons will be created starting
|
||||||
* at the specified position.
|
* at the specified position.
|
||||||
@ -306,6 +338,7 @@ load_desktop_icons (int incremental, int xpos, int ypos)
|
|||||||
int have_pos, x, y;
|
int have_pos, x, y;
|
||||||
struct desktop_icon_info *dii;
|
struct desktop_icon_info *dii;
|
||||||
GSList *need_position_list, *l;
|
GSList *need_position_list, *l;
|
||||||
|
GList *all_icons;
|
||||||
|
|
||||||
dir = mc_opendir (desktop_directory);
|
dir = mc_opendir (desktop_directory);
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
@ -316,20 +349,33 @@ load_desktop_icons (int incremental, int xpos, int ypos)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First create the icons for all the files that do have their icon position set. Build a
|
/*
|
||||||
* list of the icons that do not have their position set.
|
* First create the icons for all the files that do have their
|
||||||
|
* icon position set. Build a list of the icons that do not
|
||||||
|
* have their position set.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
need_position_list = NULL;
|
need_position_list = NULL;
|
||||||
|
|
||||||
|
all_icons = desktop_get_all_icons ();
|
||||||
|
|
||||||
while ((dirent = mc_readdir (dir)) != NULL) {
|
while ((dirent = mc_readdir (dir)) != NULL) {
|
||||||
if (((dirent->d_name[0] == '.') && (dirent->d_name[1] == 0))
|
if (((dirent->d_name[0] == '.') && (dirent->d_name[1] == 0))
|
||||||
|| ((dirent->d_name[0] == '.') && (dirent->d_name[1] == '.') && (dirent->d_name[2] == 0)))
|
|| ((dirent->d_name[0] == '.') && (dirent->d_name[1] == '.') && (dirent->d_name[2] == 0)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (incremental && icon_exists (dirent->d_name))
|
if (incremental){
|
||||||
continue;
|
GList *element;
|
||||||
|
|
||||||
|
element = icon_exists_in_list (all_icons, dirent->d_name);
|
||||||
|
|
||||||
|
if (element){
|
||||||
|
g_list_remove_link (all_icons, element);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
full_name = g_concat_dir_and_file (desktop_directory, dirent->d_name);
|
full_name = g_concat_dir_and_file (desktop_directory, dirent->d_name);
|
||||||
|
|
||||||
have_pos = gmeta_get_icon_pos (full_name, &x, &y);
|
have_pos = gmeta_get_icon_pos (full_name, &x, &y);
|
||||||
@ -345,7 +391,23 @@ load_desktop_icons (int incremental, int xpos, int ypos)
|
|||||||
|
|
||||||
mc_closedir (dir);
|
mc_closedir (dir);
|
||||||
|
|
||||||
/* Now create the icons for all the files that did not have their position set. This makes
|
/*
|
||||||
|
* all_icons now contains a list of all of the icons that were not found
|
||||||
|
* in the ~/desktop directory, remove them.
|
||||||
|
*/
|
||||||
|
if (incremental){
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
for (l = all_icons; l; l = l->next){
|
||||||
|
struct desktop_icon_info *dii = l->data;
|
||||||
|
|
||||||
|
desktop_icon_destroy (dii);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_list_free (all_icons);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Now create the icons for all the files that did not have their position set. This makes
|
||||||
* auto-placement work correctly without overlapping icons.
|
* auto-placement work correctly without overlapping icons.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -375,7 +437,7 @@ destroy_desktop_icons (void)
|
|||||||
dii = l->data;
|
dii = l->data;
|
||||||
l = l->next;
|
l = l->next;
|
||||||
|
|
||||||
desktop_icon_info_free (dii);
|
desktop_icon_destroy (dii);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -392,6 +454,7 @@ reload_desktop_icons (int incremental, int x, int y)
|
|||||||
destroy_desktop_icons ();
|
destroy_desktop_icons ();
|
||||||
|
|
||||||
load_desktop_icons (incremental, x, y);
|
load_desktop_icons (incremental, x, y);
|
||||||
|
x_flush_events ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unselects all the desktop icons except the one in exclude */
|
/* Unselects all the desktop icons except the one in exclude */
|
||||||
@ -657,8 +720,8 @@ editing_stopped (GnomeIconTextItem *iti, gpointer data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Used to open a desktop icon when the user double-clicks on it */
|
/* Used to open a desktop icon when the user double-clicks on it */
|
||||||
static void
|
void
|
||||||
open_desktop_icon (struct desktop_icon_info *dii)
|
desktop_icon_open (struct desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
file_entry *fe;
|
file_entry *fe;
|
||||||
@ -675,6 +738,31 @@ open_desktop_icon (struct desktop_icon_info *dii)
|
|||||||
file_entry_free (fe);
|
file_entry_free (fe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
desktop_icon_delete (struct desktop_icon_info *dii)
|
||||||
|
{
|
||||||
|
char *full_name;
|
||||||
|
struct stat s;
|
||||||
|
long progress_count = 0;
|
||||||
|
double progress_bytes = 0;
|
||||||
|
|
||||||
|
/* 1. Delete the file */
|
||||||
|
create_op_win (OP_DELETE, 1);
|
||||||
|
x_flush_events ();
|
||||||
|
|
||||||
|
full_name = g_concat_dir_and_file (desktop_directory, dii->filename);
|
||||||
|
stat (full_name, &s);
|
||||||
|
if (S_ISDIR (s.st_mode))
|
||||||
|
erase_dir (full_name, &progress_count, &progress_bytes);
|
||||||
|
else
|
||||||
|
erase_file (full_name, &progress_count, &progress_bytes, TRUE);
|
||||||
|
g_free (full_name);
|
||||||
|
destroy_op_win ();
|
||||||
|
|
||||||
|
/* 2. Destroy the dicon */
|
||||||
|
desktop_icon_destroy (dii);
|
||||||
|
}
|
||||||
|
|
||||||
/* Used to execute the popup menu for desktop icons */
|
/* Used to execute the popup menu for desktop icons */
|
||||||
static void
|
static void
|
||||||
do_popup_menu (struct desktop_icon_info *dii, GdkEventButton *event)
|
do_popup_menu (struct desktop_icon_info *dii, GdkEventButton *event)
|
||||||
@ -684,7 +772,7 @@ do_popup_menu (struct desktop_icon_info *dii, GdkEventButton *event)
|
|||||||
filename = g_concat_dir_and_file (desktop_directory, dii->filename);
|
filename = g_concat_dir_and_file (desktop_directory, dii->filename);
|
||||||
|
|
||||||
if (gpopup_do_popup (event, NULL, dii, 0, filename) != -1)
|
if (gpopup_do_popup (event, NULL, dii, 0, filename) != -1)
|
||||||
reload_desktop_icons (FALSE, 0, 0); /* bleah */
|
reload_desktop_icons (TRUE, 0, 0); /* bleah */
|
||||||
|
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
}
|
}
|
||||||
@ -770,7 +858,7 @@ icon_button_press (GtkWidget *widget, GdkEventButton *event, gpointer data)
|
|||||||
if (event->button != 1)
|
if (event->button != 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
open_desktop_icon (dii);
|
desktop_icon_open (dii);
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1152,8 +1240,8 @@ desktop_icon_info_new (char *filename, int auto_pos, int xpos, int ypos)
|
|||||||
* Frees a desktop icon information structure, and destroy the icon
|
* Frees a desktop icon information structure, and destroy the icon
|
||||||
* widget. Does not remove the structure from the desktop_icons list!
|
* widget. Does not remove the structure from the desktop_icons list!
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
desktop_icon_info_free (struct desktop_icon_info *dii)
|
desktop_icon_destroy (struct desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
gtk_widget_destroy (dii->dicon);
|
gtk_widget_destroy (dii->dicon);
|
||||||
remove_from_slot (dii);
|
remove_from_slot (dii);
|
||||||
@ -1220,7 +1308,7 @@ create_desktop_dir (void)
|
|||||||
g_free (home_link_name);
|
g_free (home_link_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_trashcan (desktop_directory);
|
/* setup_trashcan (desktop_directory); */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sets up a proxy window for DnD on the specified X window. Courtesy of Owen Taylor */
|
/* Sets up a proxy window for DnD on the specified X window. Courtesy of Owen Taylor */
|
||||||
|
@ -32,6 +32,7 @@ void desktop_init (void);
|
|||||||
/* Shuts the desktop down by destroying the desktop icons. */
|
/* Shuts the desktop down by destroying the desktop icons. */
|
||||||
void desktop_destroy (void);
|
void desktop_destroy (void);
|
||||||
|
|
||||||
|
|
||||||
/* This structure defines the information carried by a desktop icon */
|
/* This structure defines the information carried by a desktop icon */
|
||||||
typedef struct desktop_icon_info {
|
typedef struct desktop_icon_info {
|
||||||
GtkWidget *dicon; /* The desktop icon widget */
|
GtkWidget *dicon; /* The desktop icon widget */
|
||||||
@ -45,19 +46,16 @@ typedef struct desktop_icon_info {
|
|||||||
*/
|
*/
|
||||||
} desktop_icon_info;
|
} desktop_icon_info;
|
||||||
|
|
||||||
|
void desktop_icon_destroy (struct desktop_icon_info *dii);
|
||||||
|
void desktop_icon_open (struct desktop_icon_info *dii);
|
||||||
|
void desktop_icon_delete (struct desktop_icon_info *dii);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
application,
|
application,
|
||||||
directory,
|
directory,
|
||||||
file
|
file
|
||||||
} icon_t;
|
} icon_t;
|
||||||
|
|
||||||
/* A structure that describes each icon on the desktop */
|
/* A structure that describes each icon on the desktop */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GnomeDesktopEntry *dentry;
|
GnomeDesktopEntry *dentry;
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include "gpopup.h"
|
#include "gpopup.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
|
|
||||||
#define CLIST_FROM_SW(panel_list) GTK_CLIST (GTK_BIN (panel_list)->child)
|
#define CLIST_FROM_SW(panel_list) GTK_CLIST (GTK_BIN (panel_list)->child)
|
||||||
|
|
||||||
|
|
||||||
@ -82,39 +81,27 @@ panel_action_edit (GtkWidget *widget, WPanel *panel)
|
|||||||
static void
|
static void
|
||||||
desktop_icon_view(GtkWidget *widget, desktop_icon_info *dii)
|
desktop_icon_view(GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
g_warning("NYI");
|
g_warning ("Not yet implemented\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pops up the icon properties pages */
|
/* Pops up the icon properties pages */
|
||||||
void
|
void
|
||||||
desktop_icon_properties (GtkWidget *widget, desktop_icon_info *dii)
|
desktop_icon_properties (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
path = g_copy_strings(getenv("HOME"), "/desktop/", dii->filename, NULL);
|
path = g_copy_strings (getenv("HOME"), "/desktop/", dii->filename, NULL);
|
||||||
retval = item_properties (dii->dicon, path, dii);
|
retval = item_properties (dii->dicon, path, dii);
|
||||||
g_free(path);
|
g_free(path);
|
||||||
if(retval)
|
if (retval)
|
||||||
reread_cmd(); /* Lame. Slow. Works. */
|
reread_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
desktop_icon_execute (GtkWidget *ignored, desktop_icon_info *dii)
|
desktop_icon_execute (GtkWidget *ignored, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
char *path;
|
desktop_icon_open (dii);
|
||||||
/* Ultra lame-o execute. This should be replaced by the fixed regexp_command
|
|
||||||
* invocation
|
|
||||||
*/
|
|
||||||
|
|
||||||
path = g_copy_strings(getenv("HOME"), "/desktop/", dii->filename, NULL);
|
|
||||||
|
|
||||||
if (g_file_test(path, G_FILE_TEST_ISDIR))
|
|
||||||
new_panel_at (path);
|
|
||||||
else
|
|
||||||
gnome_desktop_entry_launch (path);
|
|
||||||
|
|
||||||
g_free(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -144,7 +131,7 @@ dicon_copy (GtkWidget *widget, desktop_icon_info *dii)
|
|||||||
static void
|
static void
|
||||||
dicon_delete (GtkWidget *widget, desktop_icon_info *dii)
|
dicon_delete (GtkWidget *widget, desktop_icon_info *dii)
|
||||||
{
|
{
|
||||||
g_warning ("Implement this function!");
|
desktop_icon_delete (dii);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is our custom signal connection function for popup menu items -- see below for the
|
/* This is our custom signal connection function for popup menu items -- see below for the
|
||||||
@ -243,8 +230,10 @@ static GnomeUIInfo panel_actions[] = {
|
|||||||
/* Menu entries for files from desktop icons */
|
/* Menu entries for files from desktop icons */
|
||||||
static GnomeUIInfo desktop_icon_actions[] = {
|
static GnomeUIInfo desktop_icon_actions[] = {
|
||||||
GNOMEUIINFO_SEPARATOR,
|
GNOMEUIINFO_SEPARATOR,
|
||||||
|
#if 0
|
||||||
GNOMEUIINFO_ITEM_NONE (N_("Move/rename..."), NULL, dicon_move),
|
GNOMEUIINFO_ITEM_NONE (N_("Move/rename..."), NULL, dicon_move),
|
||||||
GNOMEUIINFO_ITEM_NONE (N_("Copy..."), NULL, dicon_copy),
|
GNOMEUIINFO_ITEM_NONE (N_("Copy..."), NULL, dicon_copy),
|
||||||
|
#endif
|
||||||
GNOMEUIINFO_ITEM_NONE (N_("Delete"), NULL, dicon_delete),
|
GNOMEUIINFO_ITEM_NONE (N_("Delete"), NULL, dicon_delete),
|
||||||
GNOMEUIINFO_SEPARATOR,
|
GNOMEUIINFO_SEPARATOR,
|
||||||
GNOMEUIINFO_END
|
GNOMEUIINFO_END
|
||||||
@ -545,7 +534,7 @@ gpopup_do_popup (GdkEventButton *event,
|
|||||||
|
|
||||||
/* Run it */
|
/* Run it */
|
||||||
|
|
||||||
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 3, event->time);
|
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, event->button, event->time);
|
||||||
gtk_grab_add (menu);
|
gtk_grab_add (menu);
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
gtk_grab_remove (menu);
|
gtk_grab_remove (menu);
|
||||||
|
@ -904,7 +904,7 @@ panel_widget_motion (GtkWidget *widget, GdkEventMotion *event, WPanel *panel)
|
|||||||
|
|
||||||
list = gtk_target_list_new (drag_types, ELEMENTS (drag_types));
|
list = gtk_target_list_new (drag_types, ELEMENTS (drag_types));
|
||||||
|
|
||||||
if (panel->maybe_start_drag == 3)
|
if (panel->maybe_start_drag == 2)
|
||||||
action = GDK_ACTION_ASK;
|
action = GDK_ACTION_ASK;
|
||||||
else
|
else
|
||||||
action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
|
action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
|
||||||
@ -1126,16 +1126,12 @@ panel_icon_list_select_icon (GtkWidget *widget, int index, GdkEvent *event, WPan
|
|||||||
new_panel_at (fullname);
|
new_panel_at (fullname);
|
||||||
free (fullname);
|
free (fullname);
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
if (event->button.button == 3)
|
||||||
|
gpopup_do_popup ((GdkEventButton *) event, panel, NULL, index, panel->dir.list[index].fname);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_BUTTON_RELEASE:
|
|
||||||
if (event->button.button != 3)
|
|
||||||
return;
|
|
||||||
|
|
||||||
gpopup_do_popup ((GdkEventButton *) event, panel, NULL, index, panel->dir.list[index].fname);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case GDK_2BUTTON_PRESS:
|
case GDK_2BUTTON_PRESS:
|
||||||
if (event->button.button == 1)
|
if (event->button.button == 1)
|
||||||
do_enter (panel);
|
do_enter (panel);
|
||||||
@ -1200,8 +1196,10 @@ panel_icon_list_button_press (GtkWidget *widget, GdkEventButton *event, WPanel *
|
|||||||
|
|
||||||
if (icon == -1)
|
if (icon == -1)
|
||||||
panel->maybe_start_drag = 0;
|
panel->maybe_start_drag = 0;
|
||||||
else
|
else {
|
||||||
panel->maybe_start_drag = event->button;
|
if (event->button != 3)
|
||||||
|
panel->maybe_start_drag = event->button;
|
||||||
|
}
|
||||||
|
|
||||||
panel->click_x = event->x;
|
panel->click_x = event->x;
|
||||||
panel->click_y = event->y;
|
panel->click_y = event->y;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
1998-12-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||||
|
|
||||||
|
* cmd.c (check_for_default): Make this compile.
|
||||||
|
|
||||||
Tue Dec 29 22:25:34 1998 Timur Bakeyev <mc@bat.ru>
|
Tue Dec 29 22:25:34 1998 Timur Bakeyev <mc@bat.ru>
|
||||||
|
|
||||||
* mountlist.c: Compress all xBSD systems to one line and add check
|
* mountlist.c: Compress all xBSD systems to one line and add check
|
||||||
|
@ -232,8 +232,6 @@ char *op_names [3] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int recursive_erase (char *s, long *progress_count, double *progress_bytes);
|
static int recursive_erase (char *s, long *progress_count, double *progress_bytes);
|
||||||
static int erase_file (char *s, long *progress_count,
|
|
||||||
double *progress_bytes, int is_toplevel_file);
|
|
||||||
|
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
@ -1357,7 +1355,7 @@ oktoret:
|
|||||||
|
|
||||||
/* {{{ Erase routines */
|
/* {{{ Erase routines */
|
||||||
/* Don't update progress status if progress_count==NULL */
|
/* Don't update progress status if progress_count==NULL */
|
||||||
static int
|
int
|
||||||
erase_file (char *s,
|
erase_file (char *s,
|
||||||
long *progress_count,
|
long *progress_count,
|
||||||
double *progress_bytes,
|
double *progress_bytes,
|
||||||
|
@ -41,6 +41,7 @@ int copy_dir_dir (char *s, char *d, int toplevel, int move_over,
|
|||||||
int delete, struct link *parent_dirs,
|
int delete, struct link *parent_dirs,
|
||||||
long *progres_count, double *progress_bytes);
|
long *progres_count, double *progress_bytes);
|
||||||
int erase_dir (char *s, long *progres_count, double *progress_bytes);
|
int erase_dir (char *s, long *progres_count, double *progress_bytes);
|
||||||
|
int erase_file (char *s, long *progress_count, double *progress_bytes, int is_toplevel_file);
|
||||||
int erase_dir_iff_empty (char *s);
|
int erase_dir_iff_empty (char *s);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
10
src/main.c
10
src/main.c
@ -2684,6 +2684,9 @@ handle_args (int argc, char *argv [])
|
|||||||
corba_register_server ();
|
corba_register_server ();
|
||||||
#else
|
#else
|
||||||
gnome_init_with_popt_table ("gmc", VERSION, argc, argv, argument_table, 0, &ctx);
|
gnome_init_with_popt_table ("gmc", VERSION, argc, argv, argument_table, 0, &ctx);
|
||||||
|
gtk_widget_push_visual (gdk_imlib_get_visual ());
|
||||||
|
gtk_widget_push_colormap (gdk_imlib_get_colormap ());
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
poptResetContext (ctx);
|
poptResetContext (ctx);
|
||||||
#else
|
#else
|
||||||
@ -2818,6 +2821,13 @@ int main (int argc, char *argv [])
|
|||||||
bindtextdomain ("mc", LOCALEDIR);
|
bindtextdomain ("mc", LOCALEDIR);
|
||||||
textdomain ("mc");
|
textdomain ("mc");
|
||||||
|
|
||||||
|
{
|
||||||
|
volatile int i = 1;
|
||||||
|
|
||||||
|
while (!i)
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
/* Initialize list of all user group for timur_clr_mode */
|
/* Initialize list of all user group for timur_clr_mode */
|
||||||
init_groups ();
|
init_groups ();
|
||||||
|
|
||||||
|
@ -124,6 +124,7 @@ typedef struct {
|
|||||||
void *list;
|
void *list;
|
||||||
void *tree;
|
void *tree;
|
||||||
void *icons;
|
void *icons;
|
||||||
|
void *notebook;
|
||||||
void *scrollbar;
|
void *scrollbar;
|
||||||
void *status;
|
void *status;
|
||||||
void *ministatus;
|
void *ministatus;
|
||||||
|
Loading…
Reference in New Issue
Block a user