If you had the choice to label your columns even that "wrapping"
problem would be solved.
On Fri, Dec 30, 2011 at 12:08:54AM -0700, Steve Holmes wrote:
> This sounds like the same sort of problems that often goes with the
> Microsoft Windows desktops too. I really wish one could use a "List
> view" in both situations. The only other thing I would think of
> would be to allow the tab key to traverse the desktop from first
> icon to the last which would usually be a top left to bottom right
> but probably go down each column vertically.
>
> What I usually do with these desktops is first, sort all icons by
> type; then when navigating, I usually start at the top left with the
> home key and then go down the first column. When I hit bottom, I
> press home again and then move over to the right one position and
> then go down that column. I keep doing that until I run out of
> choices. I believe it is the right most column that will contain
> the last icons in the list. the thing I don't like in all these
> desktops is on that last column, as you hit bottom of that often
> shorter list, the pointer will be pushed back over to the next
> column to the left and that can cause all kinds of confusion if you
> don't realize what is happening. I think it would be better to just
> stop in its tracks and not allow any further navigation in that
> downward direction on that last column.
>
> Hope this makes sense.
_______________________________________________
orca-list mailing list
orca-list gnome org
http://mail.gnome.org/mailman/listinfo/orca-list
Visit http://live.gnome.org/Orca for more information on Orca.
The manual is at http://library.gnome.org/users/gnome-access-guide/nightly/ats-2.html
The FAQ is at http://live.gnome.org/Orca/FrequentlyAskedQuestions
Log bugs and feature requests at http://bugzilla.gnome.org
Find out how to help at http://live.gnome.org/Orca/HowCanIHelp
From 8cdb76ea08afa4d51a4ce353f3f556d03e00701b Mon Sep 17 00:00:00 2001 From: Leena Chourey <leenac cdac in> Date: Wed, 22 Feb 2012 16:40:02 +0530 Subject: [PATCH] Completeness using Down and Right arrow key --- .../libnautilus-private/nautilus-icon-container.c | 180 +++++++++++++++++--- .../libnautilus-private/nautilus-icon-container.h | 2 + 2 files changed, 162 insertions(+), 20 deletions(-) diff --git a/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.c b/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.c index aa5c709..b99f444 100644 --- a/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.c +++ b/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.c @@ -243,6 +243,13 @@ static const char *nautilus_icon_container_accessible_action_descriptions[] = { G_DEFINE_TYPE (NautilusIconContainer, nautilus_icon_container, EEL_TYPE_CANVAS); +/* Function to find next row leftmost*/ +static NautilusIcon *find_nextrow_leftmost (NautilusIconContainer *container, NautilusIcon *from); +/* Function to search leftmost in a row */ +static NautilusIcon *search_leftmost(NautilusIconContainer *container, NautilusIcon *to); +/* To define the simple dialog box for confirmation at last icon on desktop*/ +static gboolean simple_dialog(); + /* The NautilusIconContainer signals. */ enum { ACTIVATE, @@ -3484,15 +3491,32 @@ closest_in_90_degrees (NautilusIconContainer *container, best_dist = data; if (best_so_far == NULL) { - *best_dist = dist; - return TRUE; + if (container->details->arrow_key_direction == GTK_DIR_DOWN) { + if (dx == 0 || ((-48) < dx && dx < 0) || (0 < dx && dx < 48)) { + /*Icon in the down direction but not in the same column */ + *best_dist = dist; + return TRUE; + } + } + else { + *best_dist = dist; + return TRUE; + } } if (dist < *best_dist) { - *best_dist = dist; - return TRUE; + if (container->details->arrow_key_direction == GTK_DIR_DOWN) { + if (dx == 0 || ((-48) < dx && dx < 0) || (0 < dx && dx < 48)) { + /*Icon in the down direction but not in the same column*/ + *best_dist = dist; + return TRUE; + } + } + else { + *best_dist = dist; + return TRUE; + } } - return FALSE; } @@ -3690,12 +3714,17 @@ keyboard_arrow_key (NautilusIconContainer *container, empty_start, NULL); } else { record_arrow_key_start (container, from, direction); - - to = find_best_icon - (container, from, - container->details->auto_layout ? better_destination : better_destination_manual, - &data); + if (direction == GTK_DIR_RIGHT) { + to = find_nextrow_leftmost(container, from); + printf (nautilus_icon_canvas_item_get_editable_text (to->item)); + } + else { + to = find_best_icon + (container, from, + container->details->auto_layout ? better_destination : better_destination_manual, + &data); + } /* only wrap around to next/previous row/column if no a11y is used. * Visually impaired people may be easily confused by this. */ @@ -3725,17 +3754,23 @@ keyboard_arrow_key (NautilusIconContainer *container, * * Should select 4. */ - if (to == NULL && - container->details->auto_layout && - better_destination_fallback_fallback != NULL) { - to = find_best_icon - (container, from, - better_destination_fallback_fallback, - &data); - } - if (to == NULL) { - to = from; + if (direction == GTK_DIR_DOWN) { + /*on last item of one col control will shift to first item of next col (if any) with down arrow*/ + int x = 0; + to = find_best_icon(container, from, next_column_highest, &data); + if (to == NULL) { + x = simple_dialog(); + if (x == 1) + to = find_best_icon (container, NULL, leftmost_in_top_row, NULL); + else + to = from; + } + } + else if (direction == GTK_DIR_RIGHT) + to = find_nextrow_leftmost(container, from); + else + to = from; } } @@ -9743,3 +9778,108 @@ nautilus_icon_container_set_store_layout_timestamps (NautilusIconContainer *cont #endif /* ! NAUTILUS_OMIT_SELF_CHECK */ +/* Function to find next row leftmost*/ +static NautilusIcon *find_nextrow_leftmost(NautilusIconContainer *container, NautilusIcon *from) { + NautilusIcon *to; + to = search_leftmost(container, from); + if (to != NULL) + return to; + return NULL; +} + +/* Function to search leftmost in a row */ +static NautilusIcon *search_leftmost(NautilusIconContainer *container, NautilusIcon *from) { + NautilusIcon *candidate, *to, *temp; + GList *sort_list, *p, *q; + static gboolean x = 0; + q = container->details->icons; + sort_icons_yx(container); + for (p = container->details->icons; p != NULL; p = p->next) { + candidate = p->data; + if (candidate->item == from->item) { + if (p->next == NULL) { + x = simple_dialog(); + if (x == 1) + to = q->data; + else + return candidate; + } + else + to = p->next->data; + return to; + } + } + return NULL; +} + +static GList *sort_icons_yx(NautilusIconContainer *container) { + NautilusIcon *candidate, *temp, *next ; + int count = 0, j = 0, i = 0; + GList *p, *q; + p = container->details->icons; + q = p; + gint len= g_list_length(p); + for(i = 0; i < len ; i++) { + p = q; + for(j = 0; j < len-1;j++) { + candidate = p->data; + next = p->next->data; + if (candidate->y > next->y) { + temp = p->next->data; + p->next->data = p->data; + p->data = temp; + } + else if (candidate->y == next->y) { + if (candidate->x > next->x) { + temp = p->next->data; + p->next->data = p->data; + p->data = temp; + } + } + p = p->next; + } + } + return p; +} +static gboolean simple_dialog() { + static GtkWidget *dialog = NULL; + gint response; + if (! dialog) { + GtkWidget *label, *window; + GtkWidget *box; + #if 1 + /* Create dialog */ + dialog = gtk_dialog_new(); + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + /* Set it modal and transient for main window. */ + gtk_window_set_modal(GTK_WINDOW(dialog ), TRUE); + gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(window)); + /* Set title */ + gtk_window_set_title(GTK_WINDOW(dialog), "Conformation"); + + /* Add buttons. */ + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_YES, 1); + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_NO, 2); + + #endif + + /* Create label */ + label = gtk_label_new("This is the last icon on Desktop, Do you want to continue visiting from first icon?"); + + /* Pack label, taking API change in account. */ + #if GTK_MINOR_VERSION < 14 + box = GTK_DIALOG(dialog)->vbox; + #else + box = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); + #endif + gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); + + /* Show dialog */ + gtk_widget_show_all(dialog); + } + +/* Run dialog */ + response = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_hide(dialog); + return(response); +} diff --git a/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.h b/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.h index 7d2774e..63a3a2b 100644 --- a/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.h +++ b/nautilus-2.32.2.1/libnautilus-private/nautilus-icon-container.h @@ -351,6 +351,8 @@ void nautilus_icon_container_set_store_layout_timestamps (Nautilu void nautilus_icon_container_widget_to_file_operation_position (NautilusIconContainer *container, GdkPoint *position); +/*Function declaration for sort_icons_yx */ +static GList *sort_icons_yx(NautilusIconContainer *container); #define CANVAS_WIDTH(container,allocation) ((allocation.width \ - container->details->left_margin \ - container->details->right_margin) \ -- 1.7.4.1
Attachment:
Install.odt
Description: application/vnd.oasis.opendocument.text
Attachment:
ReadMe(20feb).odt
Description: application/vnd.oasis.opendocument.text