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 + -
显示快捷键?