ptk-icon-view.c
来自「台湾人开发的Linux下的文件管理器」· C语言 代码 · 共 1,591 行 · 第 1/5 页
C
1,591 行
static void ptk_icon_view_drag_data_delete ( GtkWidget *widget, GdkDragContext *context );/* Target side drag signals */static void ptk_icon_view_drag_leave ( GtkWidget *widget, GdkDragContext *context, guint time );static gboolean ptk_icon_view_drag_motion ( GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time );static gboolean ptk_icon_view_drag_drop ( GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time );static void ptk_icon_view_drag_data_received ( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time );static gboolean ptk_icon_view_maybe_begin_drag ( PtkIconView *icon_view, GdkEventMotion *event );static void remove_scroll_timeout ( PtkIconView *icon_view );/* interactive search */static void ptk_icon_view_ensure_interactive_directory ( PtkIconView *icon_view );static void send_focus_change ( GtkWidget *widget, gboolean in );static void ptk_icon_view_search_dialog_hide ( GtkWidget *search_dialog, PtkIconView *icon_view );static void ptk_icon_view_search_position_func ( PtkIconView *icon_view, GtkWidget *search_dialog );static void ptk_icon_view_search_disable_popdown ( GtkEntry *entry, GtkMenu *menu, gpointer data );static void ptk_icon_view_search_preedit_changed ( GtkIMContext *im_context, PtkIconView *icon_view );static void ptk_icon_view_search_activate ( GtkEntry *entry, PtkIconView *icon_view );static gboolean ptk_icon_view_real_search_enable_popdown( gpointer data );static void ptk_icon_view_search_enable_popdown ( GtkWidget *widget, gpointer data );static gboolean ptk_icon_view_search_delete_event ( GtkWidget *widget, GdkEventAny *event, PtkIconView *icon_view );static gboolean ptk_icon_view_search_button_press_event ( GtkWidget *widget, GdkEventButton *event, PtkIconView *icon_view );static gboolean ptk_icon_view_search_scroll_event ( GtkWidget *entry, GdkEventScroll *event, PtkIconView *icon_view );static gboolean ptk_icon_view_search_key_press_event ( GtkWidget *entry, GdkEventKey *event, PtkIconView *icon_view );static void ptk_icon_view_search_move ( GtkWidget *window, PtkIconView *icon_view, gboolean up );static gboolean ptk_icon_view_search_equal_func ( GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data );static gboolean ptk_icon_view_search_iter ( PtkIconView *icon_view, GtkTreeIter *iter, const gchar *text, gint *count, gint n );static void ptk_icon_view_search_init ( GtkWidget *entry, PtkIconView *icon_view );struct _PtkIconViewCellInfo{ GtkCellRenderer *cell;guint expand : 1;guint pack : 1;guint editing : 1; gint position; GSList *attributes; GtkCellLayoutDataFunc func; gpointer func_data; GDestroyNotify destroy;};struct _PtkIconViewChild{ PtkIconViewItem *item; GtkWidget *widget; gint cell;};struct _PtkIconViewItem{ GtkTreeIter iter; gint index; gint row, col; /* Bounding box */ GdkRectangle area; /* Individual cells. * box[i] is the actual area occupied by cell i, * before, after are used to calculate the cell * area relative to the box. * See ptk_icon_view_get_cell_area(). */ gint n_cells; GdkRectangle *box; gint *before; gint *after;guint selected : 1;guint selected_before_rubberbanding : 1;};typedef void ( *PtkIconViewSearchDialogPositionFunc ) ( PtkIconView *icon_view, GtkWidget *search_dialog );struct _PtkIconViewPrivate{ gint width, height; GtkSelectionMode selection_mode; GdkWindow *bin_window; GList *children; GtkTreeModel *model;#if ! GLIB_CHECK_VERSION(2, 10, 0) GMemChunk *items_chunk;#endif GList *items; GtkAdjustment *hadjustment; GtkAdjustment *vadjustment; gint layout_idle_id; gboolean doing_rubberband; gint rubberband_x1, rubberband_y1; gint rubberband_x2, rubberband_y2; GdkGC *rubberband_border_gc; GdkGC *rubberband_fill_gc; gint scroll_timeout_id; gint scroll_value_diff; gint event_last_x, event_last_y; PtkIconViewItem *anchor_item; PtkIconViewItem *cursor_item; PtkIconViewItem *edited_item; GtkCellEditable *editable; PtkIconViewItem *prelit_item; PtkIconViewItem *last_single_clicked; GList *cell_list; guint n_cells; gint cursor_cell; GtkOrientation orientation; gint columns; gint item_width; gint spacing; gint row_spacing; gint column_spacing; gint margin; gint text_column; gint markup_column; gint pixbuf_column; gint pixbuf_cell; gint text_cell; /* Drag-and-drop. */ GdkModifierType start_button_mask; gint pressed_button; gint press_start_x; gint press_start_y; GtkTargetList *source_targets; GdkDragAction source_actions; GtkTargetList *dest_targets; GdkDragAction dest_actions; GtkTreeRowReference *dest_item; PtkIconViewDropPosition dest_pos;guint source_set : 1;guint dest_set : 1;guint reorderable : 1;guint empty_view_drop : 1;guint ctrl_pressed : 1;guint shift_pressed : 1; /* interactive search */guint enable_search : 1;guint disable_popdown : 1;guint hover_selection : 1;guint hover_expand : 1;guint imcontext_changed : 1; gint selected_iter; gint search_column; PtkIconViewSearchDialogPositionFunc search_dialog_position_func; PtkIconViewSearchEqualFunc search_equal_func; gpointer search_user_data; GtkDestroyNotify search_destroy; GtkWidget *search_window; GtkWidget *search_entry; guint search_entry_changed_id; guint typeselect_flush_timeout; /* PtkIconViewFlags */ guint flags; /* background pixmap */ GdkPixmap* pixmap; int pixmap_x_offset; int pixmap_y_offset;};static GObjectClass *ptk_icon_view_parent_class;static guint icon_view_signals[ LAST_SIGNAL ];GTypeptk_icon_view_get_type ( void ){ static GType type = G_TYPE_INVALID; if ( G_UNLIKELY ( type == G_TYPE_INVALID ) ) { static const GTypeInfo info = { sizeof ( PtkIconViewClass ), NULL, NULL, ( GClassInitFunc ) ptk_icon_view_class_init, NULL, NULL, sizeof ( PtkIconView ), 0, ( GInstanceInitFunc ) ptk_icon_view_init, NULL, }; static const GInterfaceInfo cell_layout_info = { ( GInterfaceInitFunc ) ptk_icon_view_cell_layout_init, NULL, NULL, }; type = g_type_register_static ( GTK_TYPE_CONTAINER, I_( "PtkIconView" ), &info, 0 ); g_type_add_interface_static ( type, GTK_TYPE_CELL_LAYOUT, &cell_layout_info ); } return type;}static voidptk_icon_view_class_init ( PtkIconViewClass *klass ){ GtkContainerClass * gtkcontainer_class; GtkWidgetClass *gtkwidget_class; GtkBindingSet *gtkbinding_set; GObjectClass *gobject_class; gtkbinding_set = gtk_binding_set_by_class ( klass ); g_type_class_add_private ( klass, sizeof ( PtkIconViewPrivate ) ); ptk_icon_view_parent_class = g_type_class_peek_parent ( klass ); gobject_class = G_OBJECT_CLASS ( klass ); gobject_class->dispose = ptk_icon_view_dispose; gobject_class->finalize = ptk_icon_view_finalize; gobject_class->set_property = ptk_icon_view_set_property; gobject_class->get_property = ptk_icon_view_get_property; gtkwidget_class = GTK_WIDGET_CLASS ( klass ); gtkwidget_class->realize = ptk_icon_view_realize; gtkwidget_class->unrealize = ptk_icon_view_unrealize; gtkwidget_class->size_request = ptk_icon_view_size_request; gtkwidget_class->size_allocate = ptk_icon_view_size_allocate; gtkwidget_class->style_set = ptk_icon_view_style_set;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?