/* This is called automatically when we recieve a drop */ static void clist_drag_data_received(GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *data, guint drag_info, guint time, FileView *view) { gint row, col; FileInfo *info; gchar dest_dir[PATH_MAX]; gtk_clist_set_background(GTK_CLIST(view->clist), view->last_row, &CLIST_COLOR); if (!gtk_clist_get_selection_info(GTK_CLIST(view->clist), x, y, &row, &col)) { g_snprintf(dest_dir, sizeof(dest_dir), "%s/", view->dir); } else { info = gtk_clist_get_row_data(GTK_CLIST(view->clist), row); if (is_dir(info)) g_snprintf(dest_dir, sizeof(dest_dir), "%s/%s/", view->dir, info->filename); else g_snprintf(dest_dir, sizeof(dest_dir), "%s/", view->dir); } create_drag_op_menu(dest_dir, (gchar *)data->data); gtk_drag_finish(context, FALSE, FALSE, time); }
static gboolean fs_fsFNameList_event( GtkWidget * widget, GdkEvent * event, gpointer user_data ) { GdkEventButton *bevent; gint row, col; (void) user_data; bevent = (GdkEventButton *) event; if ( event->type == GDK_BUTTON_RELEASE && bevent->button == 2 ) { if ( gtk_clist_get_selection_info( GTK_CLIST( widget ), bevent->x, bevent->y, &row, &col ) ) { gtk_clist_get_text( GTK_CLIST( widget ), row, 1, &fsSelectedFile ); g_free( fsSelectedFileUtf8 ); fsSelectedFileUtf8 = g_filename_from_utf8( fsSelectedFile, -1, NULL, NULL, NULL ); if ( fsSelectedFileUtf8 ) fsSelectedFile = fsSelectedFileUtf8; gtk_button_released( GTK_BUTTON( fsOk ) ); return TRUE; } } return FALSE; }
static gboolean plEvent ( GtkWidget * widget, GdkEvent * event, gpointer user_data ) { GdkEventButton *bevent; gint row, col; bevent = (GdkEventButton *) event; if ( event->type == GDK_BUTTON_RELEASE && bevent->button == 2 ) { if ( gtk_clist_get_selection_info( GTK_CLIST( widget ), bevent->x, bevent->y, &row, &col ) ) { switch ( (int) user_data ) { case 0: CLFileSelected[row] = 1; plButtonReleased( NULL, (void *) 3 ); CLFileSelected[row] = 0; return TRUE; case 1: CLListSelected[row] = 1; plButtonReleased( NULL, (void *) 2 ); return TRUE; } } } return FALSE; }
gboolean on_clist_nodes_button_press_event(GtkWidget *unused_widget, GdkEventButton *event, gpointer unused_udata) { gint row; gint col; GtkCList *clist_nodes = GTK_CLIST (gui_main_window_lookup("clist_nodes")); (void) unused_widget; (void) unused_udata; if (event->button != 3) return FALSE; update_sensitivity(clist_nodes->selection != NULL); if ( !gtk_clist_get_selection_info(clist_nodes, event->x, event->y, &row, &col) ) return FALSE; gtk_menu_popup(GTK_MENU(gui_popup_nodes()), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; }
/* Callback for button press in the directory tree area */ static int dirtree_select_cb( GtkWidget *ctree_w, GdkEventButton *ev_button ) { GNode *dnode; int row; /* If About presentation is up, end it */ about( ABOUT_END ); if (globals.fsv_mode == FSV_SPLASH) return FALSE; gtk_clist_get_selection_info( GTK_CLIST(ctree_w), ev_button->x, ev_button->y, &row, NULL ); if (row < 0) return FALSE; dnode = (GNode *)gtk_clist_get_row_data( GTK_CLIST(ctree_w), row ); if (dnode == NULL) return FALSE; /* A single-click from button 1 highlights the node, shows the * name, and updates the file list if necessary. (and also selects * the row, but GTK+ does that automatically for us) */ if ((ev_button->button == 1) && (ev_button->type == GDK_BUTTON_PRESS)) { geometry_highlight_node( dnode, FALSE ); window_statusbar( SB_RIGHT, node_absname( dnode ) ); if (dnode != dirtree_current_dnode) filelist_populate( dnode ); dirtree_current_dnode = dnode; return FALSE; } /* A double-click from button 1 gets the camera moving */ if ((ev_button->button == 1) && (ev_button->type == GDK_2BUTTON_PRESS)) { camera_look_at( dnode ); /* Preempt the forthcoming tree expand/collapse * (the standard action spawned by a double-click) */ gtk_signal_emit_stop_by_name( GTK_OBJECT(ctree_w), "button_press_event" ); return TRUE; } /* A click from button 3 selects the row, highlights the node, * shows the name, updates the file list if necessary, and brings * up a context-sensitive menu */ if (ev_button->button == 3) { gtk_clist_select_row( GTK_CLIST(ctree_w), row, 0 ); geometry_highlight_node( dnode, FALSE ); window_statusbar( SB_RIGHT, node_absname( dnode ) ); if (dnode != dirtree_current_dnode) filelist_populate( dnode ); dirtree_current_dnode = dnode; context_menu( dnode, ev_button ); return FALSE; } return FALSE; }
static int pattern_clist_event_callback (GtkWidget *widget, GdkEvent *event) { GdkEventButton *bevent = (GdkEventButton *) event; int row, column; int add; if ((event->type == GDK_BUTTON_PRESS || event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) && bevent->window == GTK_CLIST (pattern_clist)->clist_window) { if (gtk_clist_get_selection_info (GTK_CLIST (pattern_clist), bevent->x, bevent->y, &row, &column)) { if (event->type == GDK_BUTTON_PRESS) { if (column >= 0) { switch (column) { case 0: case 1: case 2: sync_pattern_data (); add = (bevent->button == 3) || (bevent->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0; pattern_set_groups (row, column, add); return TRUE; case 3: /* sync_pattern_data () is called by "select_row" callback */ gtk_clist_select_row (GTK_CLIST (pattern_clist), row, 0); show_pattern_error (row); return TRUE; default: break; } } } if (event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) return TRUE; } } return FALSE; }
/* Callback for a click in the file list area */ static int filelist_select_cb( GtkWidget *clist_w, GdkEventButton *ev_button ) { GNode *node; int row; /* If About presentation is up, end it */ about( ABOUT_END ); if (globals.fsv_mode == FSV_SPLASH) return FALSE; gtk_clist_get_selection_info( GTK_CLIST(clist_w), ev_button->x, ev_button->y, &row, NULL ); if (row < 0) return FALSE; node = (GNode *)gtk_clist_get_row_data( GTK_CLIST(clist_w), row ); if (node == NULL) return FALSE; /* A single-click from button 1 highlights the node and shows the * name (and also selects the row, but GTK+ does that for us) */ if ((ev_button->button == 1) && (ev_button->type == GDK_BUTTON_PRESS)) { geometry_highlight_node( node, FALSE ); window_statusbar( SB_RIGHT, node_absname( node ) ); return FALSE; } /* A double-click from button 1 gets the camera moving */ if ((ev_button->button == 1) && (ev_button->type == GDK_2BUTTON_PRESS)) { camera_look_at( node ); return FALSE; } /* A click from button 3 selects the row, highlights the node, * shows the name, and pops up a context-sensitive menu */ if (ev_button->button == 3) { gtk_clist_select_row( GTK_CLIST(clist_w), row, 0 ); geometry_highlight_node( node, FALSE ); window_statusbar( SB_RIGHT, node_absname( node ) ); context_menu( node, ev_button ); return FALSE; } return FALSE; }
static void mouse_click_cb(GtkWidget *widget, GdkEventButton *event, FileView *view) { if (event->button == 1) { /* Left Button: selection */ if (curr_view != view) { switch_views(); gtk_widget_grab_focus(view->clist); } } else if (event->button == 2) { /* Middle Button: Drag and Drop */ GtkTargetList *list; GdkDragContext *context; list = gtk_target_list_new(target_table, n_targets); context = gtk_drag_begin(curr_view->clist, list, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK, event->button, (GdkEvent *)event); gtk_drag_set_icon_default(context); } else if (event->button == 3) { /* Right Button: Menu */ if (cfg.windows_right_click && (view->tagged == NULL)) { /* if windows right click is enabled, we want to select the file */ gint xmouse,ymouse,row,column; GdkModifierType mask; gdk_window_get_pointer(GTK_CLIST(view->clist)->clist_window, &xmouse, &ymouse, &mask); gtk_clist_get_selection_info(GTK_CLIST(view->clist), xmouse, ymouse, &row, &column); /* don't screw up the current selection */ if (!clist_row_is_selected(view->clist, row)) gtk_clist_unselect_all(GTK_CLIST(view->clist)); focus_row(view, row, FALSE, FALSE, TRUE); } if (event->state & GDK_CONTROL_MASK) show_user_command_menu(event->button, event->time); else show_menu(event->button, event->time); } }
void on_main_popup_delete_activate(GtkMenuItem * menuitem, gpointer user_data) { gint row, col; popup_info_t *info; fprintf( stderr, "on_main_popup_delete_activate\n" ); if (info = (popup_info_t *) user_data) { gtk_clist_get_selection_info(GTK_CLIST(main_clist), info->x, info->y, &row, &col); //printf("bloa! (x %d y %d is row %d col %d)\n"); } else printf("%s", _("Oops. NULL info in on_main_popup_delete_activate\n")); }
static gint mimeview_button_pressed(GtkWidget *widget, GdkEventButton *event, MimeView *mimeview) { GtkCList *clist = GTK_CLIST(widget); gint row, column; if (!event) return FALSE; if (event->button == 2 || event->button == 3) { if (!gtk_clist_get_selection_info(clist, event->x, event->y, &row, &column)) return FALSE; gtk_clist_unselect_all(clist); gtk_clist_select_row(clist, row, column); gtkut_clist_set_focus_row(clist, row); } part_button_pressed(mimeview, event, mimeview_get_selected_part(mimeview)); return TRUE; }
/* This handles the highlighting of the rows */ static gboolean clist_drag_motion(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, FileView *view) { gint row, col; gtk_clist_set_background(GTK_CLIST(view->clist), view->last_row, &CLIST_COLOR); if (gtk_clist_get_selection_info(GTK_CLIST(view->clist), x, y, &row, &col)) { gtk_clist_set_background(GTK_CLIST(view->clist), row, &DRAG_HILIGHT); view->last_row = row; } return TRUE; }
static gint gradient_select_button_press (GtkWidget *widget, GdkEventButton *bevent, gpointer data) { GradientSelect *gsp; gsp = (GradientSelect *) data; if (bevent->button == 1 && bevent->type == GDK_2BUTTON_PRESS) { gradient_select_edit_callback (widget, data); return TRUE; } if (bevent->button == 2) { GSList *list = NULL; gint row; gint column; gtk_clist_get_selection_info (GTK_CLIST (gsp->clist), bevent->x, bevent->y, &row, &column); if (gradients_list) list = g_slist_nth (gradients_list, row); if (list) gsp->dnd_gradient = (gradient_t *) list->data; else gsp->dnd_gradient = NULL; return TRUE; } return FALSE; }
/** * Callback function to toggle selected LDIF field. * \param clist List to update. * \param event Event object. * \param data Data. */ static void imp_ldif_field_list_toggle( GtkCList *clist, GdkEventButton *event, gpointer data ) { Ldif_FieldRec *rec; gboolean toggle = FALSE; if( ! event ) return; if( impldif_dlg.rowIndSelect < 0 ) return; if( event->button == 1 ) { /* If single click in select column */ if( event->type == GDK_BUTTON_PRESS ) { gint x = event->x; gint y = event->y; gint row, col; gtk_clist_get_selection_info( clist, x, y, &row, &col ); if( col != FIELD_COL_SELECT ) return; if( row > impldif_dlg.rowCount ) return; /* Set row */ impldif_dlg.rowIndSelect = row; toggle = TRUE; } /* If double click anywhere in row */ else if( event->type == GDK_2BUTTON_PRESS ) { toggle = TRUE; } } /* Toggle field selection */ if( toggle ) { rec = gtk_clist_get_row_data( clist, impldif_dlg.rowIndSelect ); if( rec ) { ldif_field_toggle( rec ); imp_ldif_update_row( clist ); } } }
void gcb_event_clist_popup(GtkWidget *w, GdkEventButton *s, struct gchan *o) { GtkWidget *tmpwid; GtkWidget *menupop=gtk_menu_new(); gint row=-1, col; if(s->button == 3) { tmpwid=gtk_menu_item_new_with_label("Add File..."); gtk_signal_connect(GTK_OBJECT(tmpwid), "activate", (GtkSignalFunc) spawnfilew, o); gtk_menu_append(GTK_MENU(menupop), tmpwid); tmpwid=gtk_menu_item_new_with_label("Add Url..."); gtk_signal_connect(GTK_OBJECT(tmpwid), "activate", (GtkSignalFunc) httpwin, o); gtk_menu_append(GTK_MENU(menupop), tmpwid); tmpwid=gtk_menu_item_new_with_label("Delete"); gtk_clist_get_selection_info(GTK_CLIST(w), (int) s->x, (int) s->y, &row, &col); o->rem=row; gtk_signal_connect(GTK_OBJECT(tmpwid), "activate", (GtkSignalFunc) gcb_rem_from_playlist, o); gtk_menu_append(GTK_MENU(menupop), tmpwid); tmpwid=gtk_menu_item_new_with_label("Cancel"); gtk_signal_connect(GTK_OBJECT(tmpwid), "activate", (GtkSignalFunc) gtk_widget_destroy, NULL); gtk_menu_append(GTK_MENU(menupop), tmpwid); gtk_signal_connect(GTK_OBJECT(menupop), "selection-done", (GtkSignalFunc) gtk_widget_destroy, menupop); gtk_menu_popup(GTK_MENU(menupop), NULL, NULL, NULL, NULL, s->button, s->time); gtk_widget_show_all(menupop); } }
static void url_clicklist (GtkWidget * widget, GdkEventButton * event) { int row, col; char *text; if (event->button == 3) { if (gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &col) < 0) return; gtk_clist_unselect_all (GTK_CLIST (widget)); gtk_clist_select_row (GTK_CLIST (widget), row, 0); if (gtk_clist_get_text (GTK_CLIST (widget), row, 0, &text)) { if (text && text[0]) { menu_urlmenu (event, text); } } } }