static VALUE iview_cursor(VALUE self) { GtkTreePath* path; GtkCellRenderer* cell; gboolean cursor_set = gtk_icon_view_get_cursor(_SELF(self), &path, &cell); return cursor_set ? rb_assoc_new(GTKTREEPATH2RVAL(path), GOBJ2RVAL(cell)) : Qnil; }
JNIEXPORT jboolean JNICALL Java_org_gnome_gtk_GtkIconView_gtk_1icon_1view_1get_1cursor ( JNIEnv* env, jclass cls, jlong _self, jlongArray _path, jlongArray _cell ) { gboolean result; jboolean _result; GtkIconView* self; GtkTreePath** path; GtkCellRenderer** cell; // convert parameter self self = (GtkIconView*) _self; // convert parameter path path = (GtkTreePath**) bindings_java_convert_jarray_to_gpointer(env, _path); if (path == NULL) { return JNI_FALSE; // Java Exception already thrown } // convert parameter cell cell = (GtkCellRenderer**) bindings_java_convert_jarray_to_gpointer(env, _cell); if (cell == NULL) { return JNI_FALSE; // Java Exception already thrown } // call function result = gtk_icon_view_get_cursor(self, path, cell); // cleanup parameter self // cleanup parameter path bindings_java_convert_gpointer_to_jarray(env, (gpointer*)path, _path); // cleanup parameter cell bindings_java_convert_gpointer_to_jarray(env, (gpointer*)cell, _cell); // translate return value to JNI type _result = (jboolean) result; // and finally return _result; }
static gboolean focus_in (GtkWidget *view, GdkEventFocus *event, gpointer data) { GtkTreePath *path; if (!gtk_icon_view_get_cursor (GTK_ICON_VIEW (view), &path, NULL)) { path = gtk_tree_path_new_from_indices (0, -1); gtk_icon_view_set_cursor (GTK_ICON_VIEW (view), path, NULL, FALSE); } gtk_icon_view_select_path (GTK_ICON_VIEW (view), path); gtk_tree_path_free (path); return FALSE; }
static gboolean category_focus_in (GtkWidget *view, GdkEventFocus *event, CinnamonControlCenter *shell) { GtkTreePath *path; if (!gtk_icon_view_get_cursor (GTK_ICON_VIEW (view), &path, NULL)) { path = gtk_tree_path_new_from_indices (0, -1); gtk_icon_view_set_cursor (GTK_ICON_VIEW (view), path, NULL, FALSE); } gtk_icon_view_select_path (GTK_ICON_VIEW (view), path); gtk_tree_path_free (path); return FALSE; }
static gboolean keynav_failed (GtkWidget *view, GtkDirectionType direction, Views *views) { GtkTreePath *path; GtkTreeModel *model; GtkTreeIter iter; gint col; GtkTreePath *sel; if (view == views->view1 && direction == GTK_DIR_DOWN) { if (gtk_icon_view_get_cursor (GTK_ICON_VIEW (views->view1), &path, NULL)) { col = gtk_icon_view_get_item_column (GTK_ICON_VIEW (views->view1), path); gtk_tree_path_free (path); sel = NULL; model = gtk_icon_view_get_model (GTK_ICON_VIEW (views->view2)); gtk_tree_model_get_iter_first (model, &iter); do { path = gtk_tree_model_get_path (model, &iter); if (gtk_icon_view_get_item_column (GTK_ICON_VIEW (views->view2), path) == col) { sel = path; break; } } while (gtk_tree_model_iter_next (model, &iter)); gtk_icon_view_set_cursor (GTK_ICON_VIEW (views->view2), sel, NULL, FALSE); gtk_tree_path_free (sel); } gtk_widget_grab_focus (views->view2); return TRUE; } if (view == views->view2 && direction == GTK_DIR_UP) { if (gtk_icon_view_get_cursor (GTK_ICON_VIEW (views->view2), &path, NULL)) { col = gtk_icon_view_get_item_column (GTK_ICON_VIEW (views->view2), path); gtk_tree_path_free (path); sel = NULL; model = gtk_icon_view_get_model (GTK_ICON_VIEW (views->view1)); gtk_tree_model_get_iter_first (model, &iter); do { path = gtk_tree_model_get_path (model, &iter); if (gtk_icon_view_get_item_column (GTK_ICON_VIEW (views->view1), path) == col) { if (sel) gtk_tree_path_free (sel); sel = path; } else gtk_tree_path_free (path); } while (gtk_tree_model_iter_next (model, &iter)); gtk_icon_view_set_cursor (GTK_ICON_VIEW (views->view1), sel, NULL, FALSE); gtk_tree_path_free (sel); } gtk_widget_grab_focus (views->view1); return TRUE; } return FALSE; }
static gboolean keynav_failed (GtkIconView *current_view, GtkDirectionType direction, GnomeControlCenter *shell) { GList *views, *v; GtkIconView *new_view; GtkTreePath *path; GtkTreeModel *model; GtkTreeIter iter; gint col, c, dist, d; GtkTreePath *sel; gboolean res; res = FALSE; views = get_item_views (shell); for (v = views; v; v = v->next) { if (v->data == current_view) break; } if (direction == GTK_DIR_DOWN && v != NULL && v->next != NULL) { new_view = v->next->data; if (gtk_icon_view_get_cursor (current_view, &path, NULL)) { col = gtk_icon_view_get_item_column (current_view, path); gtk_tree_path_free (path); sel = NULL; dist = 1000; model = gtk_icon_view_get_model (new_view); gtk_tree_model_get_iter_first (model, &iter); do { path = gtk_tree_model_get_path (model, &iter); c = gtk_icon_view_get_item_column (new_view, path); d = ABS (c - col); if (d < dist) { if (sel) gtk_tree_path_free (sel); sel = path; dist = d; } else gtk_tree_path_free (path); } while (gtk_tree_model_iter_next (model, &iter)); gtk_icon_view_set_cursor (new_view, sel, NULL, FALSE); gtk_tree_path_free (sel); } gtk_widget_grab_focus (GTK_WIDGET (new_view)); res = TRUE; } if (direction == GTK_DIR_UP && v != NULL && v->prev != NULL) { new_view = v->prev->data; if (gtk_icon_view_get_cursor (current_view, &path, NULL)) { col = gtk_icon_view_get_item_column (current_view, path); gtk_tree_path_free (path); sel = NULL; dist = 1000; model = gtk_icon_view_get_model (new_view); gtk_tree_model_get_iter_first (model, &iter); do { path = gtk_tree_model_get_path (model, &iter); c = gtk_icon_view_get_item_column (new_view, path); d = ABS (c - col); if (d <= dist) { if (sel) gtk_tree_path_free (sel); sel = path; dist = d; } else gtk_tree_path_free (path); } while (gtk_tree_model_iter_next (model, &iter)); gtk_icon_view_set_cursor (new_view, sel, NULL, FALSE); gtk_tree_path_free (sel); } gtk_widget_grab_focus (GTK_WIDGET (new_view)); res = TRUE; } g_list_free (views); return res; }