more stuff, breaks on dragging from file manager to a target
Этот коммит содержится в:
родитель
d14a111c99
Коммит
8222d0bd69
@ -198,7 +198,7 @@ desktop_load_dentry (char *filename)
|
|||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
|
|
||||||
char *drop_types [] = {
|
char *drop_types [] = {
|
||||||
"text/plain"
|
"text/plain",
|
||||||
"url:ALL",
|
"url:ALL",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -647,13 +647,66 @@ panel_drag_request (GtkWidget *widget, GdkEventDragRequest *event, WPanel *panel
|
|||||||
void *data;
|
void *data;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
|
printf ("Drag request!\n");
|
||||||
if ((strcmp (event->data_type, "text/plain") == 0) ||
|
if ((strcmp (event->data_type, "text/plain") == 0) ||
|
||||||
(strcmp (event->data_type, "url:ALL"))){
|
(strcmp (event->data_type, "url:ALL") == 0)){
|
||||||
data = panel_build_selected_file_list (panel, &len);
|
data = panel_build_selected_file_list (panel, &len);
|
||||||
gtk_widget_dnd_data_set (widget, (GdkEvent *) event, data, len);
|
gtk_widget_dnd_data_set (widget, (GdkEvent *) event, data, len);
|
||||||
|
free (data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
panel_drop_enter (GtkWidget *widget, GdkEvent *event)
|
||||||
|
{
|
||||||
|
printf ("%s\n", event->type == GDK_DROP_ENTER ? "DROP ENTER" :
|
||||||
|
(event->type == GDK_DROP_LEAVE ? "DROP LEAVE" : "?"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
panel_drop_data_available (GtkWidget *widget, GdkEventDropDataAvailable *data, WPanel *panel)
|
||||||
|
{
|
||||||
|
printf ("Drop data available!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workaround for the CList that is not adding its clist-window to the DND windows */
|
||||||
|
static void
|
||||||
|
fixed_gtk_widget_dnd_drop_set (GtkCList *clist, int drop_enable, char **drag_types, int count, int is_destructive)
|
||||||
|
{
|
||||||
|
gtk_widget_dnd_drop_set (GTK_WIDGET (clist), drop_enable, drag_types, count, is_destructive);
|
||||||
|
gdk_window_dnd_drop_set (clist->clist_window, drop_enable, drag_types, count, is_destructive);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fixed_gtk_widget_dnd_drag_set (GtkCList *clist, int drag_enable, gchar **type_accept_list, int numtypes)
|
||||||
|
{
|
||||||
|
gtk_widget_dnd_drag_set (GTK_WIDGET (clist), drag_enable, type_accept_list, numtypes);
|
||||||
|
/* gdk_window_dnd_drag_set (clist->clist_window, drag_enable, type_accept_list, numtypes); */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
panel_realized (GtkWidget *file_list, WPanel *panel)
|
||||||
|
{
|
||||||
|
GtkObject *obj = GTK_OBJECT (file_list);
|
||||||
|
|
||||||
|
/* DND: Drag setup */
|
||||||
|
gtk_signal_connect (obj, "drag_request_event",
|
||||||
|
GTK_SIGNAL_FUNC (panel_drag_request), panel);
|
||||||
|
fixed_gtk_widget_dnd_drag_set (GTK_CLIST (file_list), TRUE, drag_types, ELEMENTS (drag_types));
|
||||||
|
|
||||||
|
/* DND: Drop setup */
|
||||||
|
gtk_signal_connect (obj, "drop_enter_event",
|
||||||
|
GTK_SIGNAL_FUNC (panel_drop_enter), panel);
|
||||||
|
|
||||||
|
gtk_signal_connect (obj, "drop_leave_event",
|
||||||
|
GTK_SIGNAL_FUNC (panel_drop_enter), panel);
|
||||||
|
|
||||||
|
gtk_signal_connect (obj, "drop_data_available_event",
|
||||||
|
GTK_SIGNAL_FUNC (panel_drop_data_available), panel);
|
||||||
|
|
||||||
|
fixed_gtk_widget_dnd_drop_set (GTK_CLIST (file_list), TRUE, drag_types, ELEMENTS (drag_types), FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
panel_create_file_list (WPanel *panel)
|
panel_create_file_list (WPanel *panel)
|
||||||
{
|
{
|
||||||
@ -682,13 +735,9 @@ panel_create_file_list (WPanel *panel)
|
|||||||
GTK_SIGNAL_FUNC (panel_file_list_row_selected),
|
GTK_SIGNAL_FUNC (panel_file_list_row_selected),
|
||||||
panel);
|
panel);
|
||||||
|
|
||||||
#if 0
|
|
||||||
gtk_signal_connect (GTK_OBJECT (file_list),
|
gtk_signal_connect (GTK_OBJECT (file_list),
|
||||||
"drag_request_event",
|
"realize",
|
||||||
GTK_SIGNAL_FUNC (panel_drag_request), panel);
|
GTK_SIGNAL_FUNC (panel_realized), panel);
|
||||||
|
|
||||||
gtk_widget_dnd_drag_set (file_list, TRUE, drag_types, ELEMENTS (drag_types));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return file_list;
|
return file_list;
|
||||||
}
|
}
|
||||||
|
@ -130,8 +130,10 @@ x_create_input (Dlg_head *h, widget_data parent, WInput *in)
|
|||||||
void
|
void
|
||||||
x_update_input (WInput *in)
|
x_update_input (WInput *in)
|
||||||
{
|
{
|
||||||
gtk_entry_set_text (GTK_ENTRY (in->widget.wdata), in->buffer);
|
GtkEntry *entry = GTK_ENTRY (in->widget.wdata);
|
||||||
GTK_ENTRY (in->widget.wdata)->current_pos = in->point;
|
|
||||||
|
gtk_entry_set_text (entry, in->buffer);
|
||||||
|
gtk_entry_set_position (entry, in->point);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Listboxes */
|
/* Listboxes */
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user