diff options
-rw-r--r-- | MAINTAINERS | 4 | ||||
-rw-r--r-- | conf/bitbake.conf | 2 | ||||
-rw-r--r-- | conf/machine/x86.conf | 3 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch | 238 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch | 16 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch | 91 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch | 32 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch | 38 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch | 25 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch | 121 | ||||
-rwxr-xr-x | packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch | 127 | ||||
-rw-r--r-- | packages/gtk+/gtk+_2.6.10.bb | 13 | ||||
-rw-r--r-- | packages/linux/linux-x86-2.6.17.9/defconfig | 118 |
13 files changed, 787 insertions, 41 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index a9d2d4b47d..054fc18ce6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -43,10 +43,10 @@ Mail: fb@kernelconcepts.de Website: http://fl0rian.wordpress.com, http://www.kernelconcepts.de/~fuchs/ Machines: nokia770, netvista, htcuniversal, netbook-pro Distros: -Interests: GPE, OpenSync, GPE, Matchbox, *dbus*, X, sqlite +Interests: GPEPhone, OpenSync, GPE, Matchbox, *dbus*, X, sqlite Recipes: gpe-*, libgpe*, libeventdb, libtododb, libcontactsdb, xserver-common Recipes: gomunicator, mbmerlin, prismstumbler gkdial, fbreader, networkmanager -Recipes: minimix, minilite, miniclipboard +Recipes: minimix, minilite, miniclipboard, gpephone* Person: Graeme Gregory Mail: dp@xora.org.uk diff --git a/conf/bitbake.conf b/conf/bitbake.conf index fd4830d849..a05cafdc62 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -324,6 +324,8 @@ SOURCEFORGE_MIRROR = "http://surfnet.dl.sourceforge.net" GPE_MIRROR = "http://gpe.linuxtogo.org/download/source" GPEPHONE_MIRROR = "http://gpephone.linuxtogo.org/download/gpephone" GPE_SVN = "svn://projects.linuxtogo.org/svn/gpe/trunk/base;module=${PN}" +GPEPHONE_MIRROR = "http://gpephone.linuxtogo.org/download" +GPEPHONE_SVN = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source;module=${PN}" XLIBS_MIRROR = "http://xlibs.freedesktop.org/release" XORG_MIRROR = "http://xorg.freedesktop.org/releases" GNOME_MIRROR = "http://ftp.gnome.org/pub/GNOME/sources" diff --git a/conf/machine/x86.conf b/conf/machine/x86.conf index 91663dfd7c..5b22d01324 100644 --- a/conf/machine/x86.conf +++ b/conf/machine/x86.conf @@ -9,10 +9,11 @@ PACKAGE_EXTRA_ARCHS = "x86" PREFERRED_PROVIDER_virtual/kernel = "linux-x86" # todo: convert to task-base # BOOTSTRAP_EXTRA_RDEPENDS = "kernel pciutils udev kernel-modules" +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules" MACHINE_TASK_PROVIDER = "task-base" -MACHINE_FEATURES = "kernel26 pci usbhost" +MACHINE_FEATURES = "kernel26 pci usbhost ext2 screen" udevdir = "/dev" OLDEST_KERNEL = "2.6.17" diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch new file mode 100755 index 0000000000..6363ecd23a --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch @@ -0,0 +1,238 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkcombobox.c 2005-08-18 22:10:57.000000000 +0800 ++++ gtk/gtkcombobox.c 2006-06-22 11:24:32.000000000 +0800 +@@ -54,6 +54,11 @@ + + /* WELCOME, to THE house of evil code */ + ++#define HILDON_MENU_COMBO_MAX_WIDTH 406 ++#define HILDON_MENU_COMBO_MIN_WIDTH 66 ++#define HILDON_MENU_COMBO_MAX_HEIGHT 305 ++#define HILDON_MENU_COMBO_MIN_HEIGHT 70 ++ + typedef struct _ComboCellInfo ComboCellInfo; + struct _ComboCellInfo + { +@@ -1199,6 +1204,8 @@ gtk_combo_box_menu_position_below (GtkMe + gint monitor_num; + GdkRectangle monitor; + ++ g_message ("%s", __FUNCTION__); ++ + /* FIXME: is using the size request here broken? */ + child = GTK_BIN (combo_box)->child; + +@@ -1240,6 +1247,7 @@ gtk_combo_box_menu_position_below (GtkMe + *push_in = FALSE; + } + ++ + static void + gtk_combo_box_menu_position_over (GtkMenu *menu, + gint *x, +@@ -1247,69 +1255,119 @@ gtk_combo_box_menu_position_over (GtkMen + gboolean *push_in, + gpointer user_data) + { +- GtkComboBox *combo_box; +- GtkWidget *active; + GtkWidget *child; + GtkWidget *widget; ++ GtkWidget *active; + GtkRequisition requisition; +- GList *children; +- gint screen_width; ++ gint screen_width, screen_height; + gint menu_xpos; + gint menu_ypos; +- gint menu_width; ++ gint menu_width, menu_height; ++ gint menu_ypad; ++ gint full_menu_height; ++ gint total_y_padding; + + g_return_if_fail (GTK_IS_COMBO_BOX (user_data)); +- +- combo_box = GTK_COMBO_BOX (user_data); +- widget = GTK_WIDGET (combo_box); + +- gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition); ++ widget = GTK_WIDGET (user_data); ++ child = GTK_BIN (user_data)->child; ++ ++ /* We need to realize the menu, as we are playing with menu item coordinates ++ * inside. */ ++ gtk_widget_realize (GTK_WIDGET (menu)); ++ ++ gtk_widget_get_child_requisition (menu->toplevel, &requisition); + menu_width = requisition.width; ++ menu_height = requisition.height; ++ ++ gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition); ++ full_menu_height = requisition.height; ++ ++ screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); ++ screen_height = gdk_screen_get_height (gtk_widget_get_screen (widget)); ++ ++ active = gtk_menu_get_active (menu); + +- active = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget)); + gdk_window_get_origin (widget->window, &menu_xpos, &menu_ypos); + + menu_xpos += widget->allocation.x; +- menu_ypos += widget->allocation.y + widget->allocation.height / 2 - 2; ++ menu_ypos += widget->allocation.y; + +- if (active != NULL) +- { +- gtk_widget_get_child_requisition (active, &requisition); +- menu_ypos -= requisition.height / 2; +- } ++ /* RTL */ ++ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ++ menu_xpos = menu_xpos + widget->allocation.width - menu_width; ++ ++ /* Substract borders */ ++ gtk_widget_style_get (GTK_WIDGET (menu), ++ "vertical-padding", &menu_ypad, ++ NULL); + +- children = GTK_MENU_SHELL (combo_box->priv->popup_widget)->children; +- while (children) ++ total_y_padding = menu_ypad + GTK_CONTAINER (menu)->border_width + ++ GTK_WIDGET (menu)->style->ythickness; ++ ++ /* Substract scroll arrow height if needed, and calculate ++ * scroll_offset. */ ++ if (full_menu_height > HILDON_MENU_COMBO_MAX_HEIGHT) + { +- child = children->data; ++ GList *child; ++ int pos; + +- if (active == child) +- break; ++ child = GTK_MENU_SHELL (menu)->children; ++ pos = 0; + +- if (GTK_WIDGET_VISIBLE (child)) +- { +- gtk_widget_get_child_requisition (child, &requisition); +- menu_ypos -= requisition.height; +- } ++ while (child) ++ { ++ GtkWidget *child_widget = GTK_WIDGET (child->data); ++ ++ if (active == child_widget) ++ break; + +- children = children->next; ++ if (GTK_WIDGET_VISIBLE (child)) ++ { ++ pos += child_widget->allocation.height; ++ ++ if (pos > HILDON_MENU_COMBO_MAX_HEIGHT) ++ menu->scroll_offset += child_widget->allocation.height; ++ } ++ ++ child = child->next; ++ } + } + +- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) +- menu_xpos = menu_xpos + widget->allocation.width - menu_width; ++ /* Try to get active item and widget lined up */ ++ if (active != NULL) ++ { ++ gint new_menu_ypos; ++ ++ new_menu_ypos = menu_ypos - active->allocation.y - total_y_padding + ++ menu->scroll_offset; ++ if (new_menu_ypos < 0 || (new_menu_ypos + menu_height) > screen_height) ++ { ++ /* Menu doesn't fit - try to get the last item lined up. */ ++ new_menu_ypos = menu_ypos - menu_height + total_y_padding + ++ active->allocation.height; ++ } ++ ++ menu_ypos = new_menu_ypos; ++ } ++ else ++ menu_ypos -= total_y_padding; /* Line up with first item */ + + /* Clamp the position on screen */ +- screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); +- + if (menu_xpos < 0) + menu_xpos = 0; + else if ((menu_xpos + menu_width) > screen_width) + menu_xpos -= ((menu_xpos + menu_width) - screen_width); + ++ if (menu_ypos < 0) ++ menu_ypos = 0; ++ else if ((menu_ypos + menu_height) > screen_height) ++ menu_ypos -= ((menu_ypos + menu_height) - screen_height); ++ + *x = menu_xpos; + *y = menu_ypos; + +- *push_in = TRUE; ++ *push_in = FALSE; + } + + static void +@@ -3481,14 +3539,18 @@ gtk_combo_box_key_press (GtkWidget *wi + + switch (event->keyval) + { ++ case GDK_Return: ++ case GDK_KP_Enter: ++ gtk_combo_box_popup (combo_box); ++ return TRUE; + case GDK_Down: + case GDK_KP_Down: +- if (gtk_combo_box_get_active_iter (combo_box, &iter)) +- { +- found = tree_next (combo_box, combo_box->priv->model, +- &iter, &new_iter, FALSE); +- break; +- } ++ if (!gtk_widget_keynav_failed (GTK_WIDGET(combo_box), GTK_DIR_RIGHT)) ++ { ++ found = FALSE; ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(combo_box)), GTK_DIR_TAB_FORWARD); ++ } ++ break; + /* else fall through */ + case GDK_Page_Up: + case GDK_KP_Page_Up: +@@ -3496,22 +3558,21 @@ gtk_combo_box_key_press (GtkWidget *wi + case GDK_KP_Home: + found = tree_first (combo_box, combo_box->priv->model, &new_iter, FALSE); + break; +- + case GDK_Up: + case GDK_KP_Up: +- if (gtk_combo_box_get_active_iter (combo_box, &iter)) +- { +- found = tree_prev (combo_box, combo_box->priv->model, +- &iter, &new_iter, FALSE); +- break; +- } ++ if (!gtk_widget_keynav_failed (GTK_WIDGET(combo_box), GTK_DIR_LEFT)) ++ { ++ found = FALSE; ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(combo_box)), GTK_DIR_TAB_BACKWARD); ++ } ++ break; + /* else fall through */ + case GDK_Page_Down: + case GDK_KP_Page_Down: + case GDK_End: + case GDK_KP_End: + found = tree_last (combo_box, combo_box->priv->model, &new_iter, FALSE); +- break; ++ break; + default: + return FALSE; + } diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch new file mode 100755 index 0000000000..def741af5d --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch @@ -0,0 +1,16 @@ +--- gtk/gtkentry.c 2005-08-18 22:10:57.000000000 +0800 ++++ gtk/gtkentry.c 2006-05-29 14:42:55.980731414 +0800 +@@ -2386,6 +2386,13 @@ gtk_entry_move_cursor (GtkEntry *e + break; + case GTK_MOVEMENT_VISUAL_POSITIONS: + new_pos = gtk_entry_move_visually (entry, new_pos, count); ++ if (entry->current_pos == new_pos && !extend_selection) ++ { ++ if (!gtk_widget_keynav_failed (GTK_WIDGET(entry), count > 0 ? GTK_DIR_RIGHT : GTK_DIR_LEFT)) ++ { ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(entry)), count > 0 ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD); ++ } ++ } + break; + case GTK_MOVEMENT_WORDS: + while (count > 0) diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch new file mode 100755 index 0000000000..6ac9629767 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch @@ -0,0 +1,91 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkiconview.c 2005-08-18 22:10:58.000000000 +0800 ++++ gtk/gtkiconview.c 2006-05-31 18:12:34.423427466 +0800 +@@ -2678,10 +2678,73 @@ find_item (GtkIconView *icon_view, + + /* FIXME: this could be more efficient + */ +- row = current->row + row_ofs; +- col = current->col + col_ofs; ++ int columns = (icon_view->priv->width - icon_view->priv->margin * 2 + icon_view->priv->column_spacing) / (icon_view->priv->column_spacing + current->width); ++ int rows = g_list_length (icon_view->priv->items) / columns; ++ if (g_list_length (icon_view->priv->items) % columns > 0) ++ rows++; + +- for (items = icon_view->priv->items; items; items = items->next) ++ items = g_list_last(icon_view->priv->items); ++ item = items->data; ++ if (col_ofs == 1) //right is pressed ++ { ++ if (current->col == item->col && current->row == (rows - 1)) //the current item is the last one, wrap to the first item ++ { ++ row = 0; ++ col = 0; ++ } ++ else if (current->col == (columns - 1)) //the current item is the rightmost one ++ { ++ row = current->row + row_ofs + 1; ++ col = 0; ++ } ++ else ++ { ++ row = current->row + row_ofs; ++ col = current->col + col_ofs; ++ } ++ } ++ else if (col_ofs == -1) //left is pressed ++ { ++ if (current->col == 0) //the current item is the leftmost one ++ { ++ if (current->row == 0) //the current item is the first one, wrap to the last item ++ { ++ row = rows - 1; ++ col = item->col; ++ } ++ else ++ { ++ row = current->row + row_ofs - 1; ++ col = columns - 1; ++ } ++ } ++ else ++ { ++ row = current->row + row_ofs; ++ col = current->col + col_ofs; ++ } ++ } ++ else if (row_ofs == 1) //down is pressed ++ { ++ if (current->row == (rows - 2) && item->col < current->col)// at the second last row ++ { ++ row = current->row + row_ofs; ++ col = 0; ++ } ++ else ++ { ++ row = current->row + row_ofs; ++ col = current->col + col_ofs; ++ } ++ } ++ else //up is pressed ++ { ++ row = current->row + row_ofs; ++ col = current->col + col_ofs; ++ } ++ ++ g_message ("row:%d, col:%d", row, col); ++ for (items = icon_view->priv->items; items; items = items->next) + { + item = items->data; + if (item->row == row && item->col == col) +@@ -2819,8 +2882,10 @@ gtk_icon_view_move_cursor_up_down (GtkIc + count, 0); + + if (!item) ++ { ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(icon_view)), count > 0 ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD); + return; +- ++ } + if (icon_view->priv->ctrl_pressed || + !icon_view->priv->shift_pressed || + !icon_view->priv->anchor_item || diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch new file mode 100755 index 0000000000..4497261ec6 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch @@ -0,0 +1,32 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkradiobutton.c 2005-08-18 22:10:58.000000000 +0800 ++++ gtk/gtkradiobutton.c 2006-05-26 17:12:35.000000000 +0800 +@@ -522,6 +522,12 @@ gtk_radio_button_focus (GtkWidget + + if (!new_focus) + { ++ if (!gtk_widget_keynav_failed (widget, direction)) ++ { ++ g_slist_free (focus_list); ++ return FALSE; ++ } ++ + tmp_list = focus_list; + + while (tmp_list) +@@ -542,8 +548,15 @@ gtk_radio_button_focus (GtkWidget + + if (new_focus) + { ++ GtkSettings *settings = gtk_widget_get_settings (widget); ++ gboolean cursor_only_focus; ++ ++ g_object_get (settings, ++ "gtk-cursor-only-focus", &cursor_only_focus, ++ NULL); + gtk_widget_grab_focus (new_focus); +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE); ++ if (!cursor_only_focus) ++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE); + } + + return TRUE; diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch new file mode 100755 index 0000000000..0c3beeec49 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch @@ -0,0 +1,38 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtksettings.c 2005-08-18 22:10:59.000000000 +0800 ++++ gtk/gtksettings.c 2006-05-29 10:29:35.000000000 +0800 +@@ -72,7 +72,8 @@ enum { + PROP_XFT_RGBA, + PROP_XFT_DPI, + #endif +- PROP_ALTERNATIVE_BUTTON_ORDER ++ PROP_ALTERNATIVE_BUTTON_ORDER, ++ PROP_CURSOR_ONLY_FOCUS + }; + + +@@ -435,6 +436,25 @@ gtk_settings_class_init (GtkSettingsClas + G_PARAM_READWRITE), + NULL); + g_assert (result == PROP_ALTERNATIVE_BUTTON_ORDER); ++ ++ /** ++ * GtkSettings:gtk-cursor-only-focus: ++ * ++ * When TRUE, keyboard navigation should be able to reach all widgets ++ * by using the cursor keys only. Tab, Shift etc. keys can't be expected ++ * to be present on the used input device. ++ * ++ * Since: 2.10 ++ */ ++ result = settings_install_property_parser (class, ++ g_param_spec_boolean ("gtk-cursor-only-focus", ++ P_("Cursor Only Focus"), ++ P_("When TRUE, there are only cursor keys available to navigate widgets"), ++ FALSE, ++ G_PARAM_READWRITE), ++ NULL); ++ ++ g_assert (result == PROP_CURSOR_ONLY_FOCUS); + } + + static void diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch new file mode 100755 index 0000000000..e3231b38d0 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch @@ -0,0 +1,25 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtktextview.c 2005-08-18 22:10:59.000000000 +0800 ++++ gtk/gtktextview.c 2006-07-03 15:34:19.880257250 +0800 +@@ -3855,6 +3855,22 @@ gtk_text_view_key_press_event (GtkWidget + + insert = gtk_text_buffer_get_insert (get_buffer (text_view)); + gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &iter, insert); ++ ++ int lineCount = gtk_text_buffer_get_line_count (get_buffer (text_view)); ++ int curLine = gtk_text_iter_get_line (&iter); ++ if (curLine == 0 && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up) ++ && (!gtk_widget_keynav_failed (GTK_WIDGET(text_view), GTK_DIR_UP))) ++ { ++ gtk_text_view_move_focus (text_view,GTK_DIR_TAB_BACKWARD); ++ return TRUE; ++ } ++ else if (curLine == (lineCount - 1) && (event->keyval == GDK_Down || event->keyval == GDK_KP_Down) ++ && (!gtk_widget_keynav_failed (GTK_WIDGET(text_view), GTK_DIR_DOWN))) ++ { ++ gtk_text_view_move_focus (text_view,GTK_DIR_TAB_FORWARD); ++ return TRUE; ++ } ++ + can_insert = gtk_text_iter_can_insert (&iter, text_view->editable); + if (can_insert && + gtk_im_context_filter_keypress (text_view->im_context, event)) diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch new file mode 100755 index 0000000000..f83558d879 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch @@ -0,0 +1,121 @@ +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtktreeview.c 2006-06-29 14:06:27.099142881 +0800 ++++ gtk/gtktreeview.c 2006-06-29 14:06:53.746305635 +0800 +@@ -4198,6 +4198,118 @@ gtk_tree_view_key_press (GtkWidget *wi + return TRUE; + } + ++ GtkTreeViewColumn *focus_column; ++ GtkTreePath *tree_path; ++ gtk_tree_view_get_cursor (tree_view, &tree_path, &focus_column); ++ GtkTreeModel *tree_model = gtk_tree_view_get_model (tree_view); ++ ++ if (tree_model && tree_path ++ && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up ++ || event->keyval == GDK_Down || event->keyval == GDK_KP_Down)) ++ { ++ GtkTreeIter cur_iter; ++ if (gtk_tree_model_get_iter (tree_model, &cur_iter, tree_path)) ++ { ++ GtkTreeIter iter; ++ GtkTreePath *path; ++ if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) ++ && !gtk_widget_keynav_failed (GTK_WIDGET(tree_view), GTK_DIR_UP)) ++ { ++ gtk_tree_model_get_iter_first (tree_model, &iter); ++ path = gtk_tree_model_get_path (tree_model, &iter); ++ if (gtk_tree_path_compare (tree_path, path) == 0) ++ { ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_BACKWARD); ++ gtk_tree_path_free (tree_path); ++ gtk_tree_path_free (path); ++ return TRUE; ++ } ++ gtk_tree_path_free (path); ++ } ++ if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) ++ && !gtk_widget_keynav_failed (GTK_WIDGET(tree_view), GTK_DIR_DOWN)) ++ { ++ if (!gtk_tree_model_iter_next (tree_model, &cur_iter))//cur_iter is the last one at its level ++ { ++ gtk_tree_model_get_iter (tree_model, &cur_iter, tree_path); ++ ++ if (!gtk_tree_model_iter_parent (tree_model, &iter, &cur_iter))//cur_iter is at toplevel ++ { ++ if (!gtk_tree_model_iter_has_child (tree_model, &cur_iter) || !gtk_tree_view_row_expanded (tree_view, tree_path)) ++ { ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_FORWARD); ++ gtk_tree_path_free (tree_path); ++ return TRUE; ++ } ++ } ++ else//check if every ancestor of cur_iter is the last one at its level ++ { ++ path = gtk_tree_model_get_path (tree_model, &iter); ++ int depth = gtk_tree_path_get_depth (path); ++ int i; ++ for (i = 0; i < depth; i++) ++ { ++ if (!gtk_tree_model_iter_next (tree_model, &iter)) ++ { ++ gtk_tree_path_up (path); ++ if (gtk_tree_path_to_string (path)) ++ gtk_tree_model_get_iter (tree_model, &iter, path); ++ } ++ else ++ break; ++ } ++ if (i == depth) ++ { ++ if (!gtk_tree_model_iter_has_child (tree_model, &cur_iter) || !gtk_tree_view_row_expanded (tree_view, tree_path)) ++ { ++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_FORWARD); ++ gtk_tree_path_free (path); ++ gtk_tree_path_free (tree_path); ++ return TRUE; ++ } ++ } ++ gtk_tree_path_free (path); ++ } ++ } ++ } ++ } ++ } ++ ++ if (tree_view->priv->columns && tree_path ++ && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left ++ || event->keyval == GDK_Right || event->keyval == GDK_KP_Right)) ++ { ++ list = tree_view->priv->columns; ++ guint length = g_list_length (list); ++ guint i = 0; ++ while (list) ++ { ++ GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data); ++ ++ if (column == focus_column) ++ { ++ if (i == 0 && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left)) ++ { ++ list = g_list_last (list); ++ gtk_tree_view_set_cursor (tree_view, tree_path, GTK_TREE_VIEW_COLUMN (list->data), FALSE); ++ gtk_tree_path_free (tree_path); ++ return TRUE; ++ } ++ if (i == length - 1 && (event->keyval == GDK_Right || event->keyval == GDK_KP_Right)) ++ { ++ list = g_list_first (list); ++ gtk_tree_view_set_cursor (tree_view, tree_path, GTK_TREE_VIEW_COLUMN (list->data), FALSE); ++ gtk_tree_path_free (tree_path); ++ return TRUE; ++ } ++ } ++ list = list->next; ++ i++; ++ } ++ } ++ ++ gtk_tree_path_free (tree_path); ++ + if (tree_view->priv->columns && (event->state & GDK_SHIFT_MASK) + && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left + || event->keyval == GDK_Right || event->keyval == GDK_KP_Right)) diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch new file mode 100755 index 0000000000..7cf4e13cf6 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch @@ -0,0 +1,127 @@ +diff -r -u -p /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.c gtk/widget/gtkwidget.c +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.c 2006-05-30 13:57:49.732943065 +0800 ++++ gtk/gtkwidget.c 2006-05-30 13:57:24.716589268 +0800 +@@ -120,6 +120,7 @@ enum { + ACCEL_CLOSURES_CHANGED, + SCREEN_CHANGED, + CAN_ACTIVATE_ACCEL, ++ KEYNAV_FAILED, + LAST_SIGNAL + }; + +@@ -202,6 +203,8 @@ static gboolean gtk_widget_real_focus_o + GdkEventFocus *event); + static gboolean gtk_widget_real_focus (GtkWidget *widget, + GtkDirectionType direction); ++static gboolean gtk_widget_real_keynav_failed (GtkWidget *widget, ++ GtkDirectionType direction); + static PangoContext* gtk_widget_peek_pango_context (GtkWidget *widget); + static void gtk_widget_propagate_state (GtkWidget *widget, + GtkStateData *data); +@@ -363,6 +366,7 @@ gtk_widget_class_init (GtkWidgetClass *k + klass->mnemonic_activate = gtk_widget_real_mnemonic_activate; + klass->grab_focus = gtk_widget_real_grab_focus; + klass->focus = gtk_widget_real_focus; ++ klass->keynav_failed = gtk_widget_real_keynav_failed; + klass->event = NULL; + klass->button_press_event = NULL; + klass->button_release_event = NULL; +@@ -1368,6 +1372,16 @@ gtk_widget_class_init (GtkWidgetClass *k + _gtk_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + GDK_TYPE_SCREEN); ++ ++ widget_signals[KEYNAV_FAILED] = ++ g_signal_new (("keynav_failed"), ++ G_TYPE_FROM_CLASS (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GtkWidgetClass, keynav_failed), ++ _gtk_boolean_handled_accumulator, NULL, ++ _gtk_marshal_BOOLEAN__ENUM, ++ G_TYPE_BOOLEAN, 1, ++ GTK_TYPE_DIRECTION_TYPE); + /** + * GtkWidget::can-activate-accel: + * @widget: the object which received the signal +@@ -4044,6 +4058,34 @@ gtk_widget_real_focus (GtkWidget + return FALSE; + } + ++static gboolean ++gtk_widget_real_keynav_failed (GtkWidget *widget, ++ GtkDirectionType direction) ++{ ++ GtkSettings *settings = gtk_widget_get_settings (widget); ++ gboolean cursor_only_focus; ++ ++ g_object_get (settings, "gtk-cursor-only-focus", &cursor_only_focus, NULL); ++ ++ switch (direction) ++ { ++ case GTK_DIR_TAB_FORWARD: ++ case GTK_DIR_TAB_BACKWARD: ++ return FALSE; ++ ++ case GTK_DIR_UP: ++ case GTK_DIR_DOWN: ++ case GTK_DIR_LEFT: ++ case GTK_DIR_RIGHT: ++ if (cursor_only_focus) ++ return FALSE; ++ } ++ ++ gdk_beep (); ++ ++ return TRUE; ++} ++ + /** + * gtk_widget_is_focus: + * @widget: a #GtkWidget +@@ -5500,6 +5542,20 @@ gtk_widget_child_focus (GtkWidget + return return_val; + } + ++gboolean ++gtk_widget_keynav_failed (GtkWidget *widget, ++ GtkDirectionType direction) ++{ ++ gboolean return_val; ++ ++ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); ++ ++ g_signal_emit (widget, widget_signals[KEYNAV_FAILED], 0, ++ direction, &return_val); ++ ++ return return_val; ++} ++ + /** + * gtk_widget_set_uposition: + * @widget: a #GtkWidget +diff -r -u -p /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.h gtk/widget/gtkwidget.h +--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.h 2006-05-30 13:57:49.736942642 +0800 ++++ gtk/gtkwidget.h 2006-05-30 13:57:24.716589268 +0800 +@@ -406,8 +406,9 @@ struct _GtkWidgetClass + gboolean (*can_activate_accel) (GtkWidget *widget, + guint signal_id); + ++ gboolean (* keynav_failed) (GtkWidget *widget, ++ GtkDirectionType direction); + /* Padding for future expansion */ +- void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); +@@ -562,7 +563,8 @@ GdkWindow *gtk_widget_get_parent_window + + gboolean gtk_widget_child_focus (GtkWidget *widget, + GtkDirectionType direction); +- ++gboolean gtk_widget_keynav_failed (GtkWidget *widget, ++ GtkDirectionType direction); + void gtk_widget_set_size_request (GtkWidget *widget, + gint width, + gint height); +Only in gtk/widget: gtkwidget.h.bak +Only in gtk/widget: gtkwidget.lo diff --git a/packages/gtk+/gtk+_2.6.10.bb b/packages/gtk+/gtk+_2.6.10.bb index b0eb0dbcdb..f3d36bcb52 100644 --- a/packages/gtk+/gtk+_2.6.10.bb +++ b/packages/gtk+/gtk+_2.6.10.bb @@ -5,7 +5,7 @@ SECTION = "libs" LICENSE = "LGPL" PRIORITY = "optional" DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt" -PR = "r7" +PR = "r8" SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ file://help.patch;patch=1 \ @@ -24,7 +24,15 @@ SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ file://migration.patch;patch=1;pnum=0 \ file://single-click.patch;patch=1 \ file://menu-styling.patch;patch=1 \ - file://compile-against-newer-glib.patch;patch=1" + file://compile-against-newer-glib.patch;patch=1 \ + file://gtk.keynav.gtkcombobox.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtkentry.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtkiconview.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtkradiobutton.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtksettings.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtktextview.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtktreeview.patch;patch=1;pnum=0 \ + file://gtk.keynav.gtkwidget.patch;patch=1;pnum=0" inherit autotools pkgconfig @@ -53,7 +61,6 @@ EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-disp # --disable-cruft LIBV = "2.4.0" - do_configure_prepend() { for i in `find . -name "Makefile.am"` do diff --git a/packages/linux/linux-x86-2.6.17.9/defconfig b/packages/linux/linux-x86-2.6.17.9/defconfig index 3ee6a43392..82f7049e49 100644 --- a/packages/linux/linux-x86-2.6.17.9/defconfig +++ b/packages/linux/linux-x86-2.6.17.9/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.17.9 -# Mon Sep 18 23:30:42 2006 +# Wed Jan 24 17:29:53 2007 # CONFIG_X86_32=y CONFIG_SEMAPHORE_SLEEPERS=y @@ -421,11 +421,14 @@ CONFIG_BLK_DEV_FD=y # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_COW_COMMON is not set -# CONFIG_BLK_DEV_LOOP is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set -# CONFIG_BLK_DEV_UB is not set -# CONFIG_BLK_DEV_RAM is not set +CONFIG_BLK_DEV_UB=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_BLK_DEV_INITRD is not set # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set @@ -682,44 +685,51 @@ CONFIG_MII=y # CONFIG_SUNGEM is not set # CONFIG_CASSINI is not set # CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m # CONFIG_NET_VENDOR_RACAL is not set # # Tulip family network device support # # CONFIG_NET_TULIP is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m # CONFIG_NET_ISA is not set CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_AC3200 is not set -# CONFIG_APRICOT is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_CS89x0 is not set -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_FORCEDETH=m +CONFIG_CS89x0=m +CONFIG_DGRS=m +CONFIG_EEPRO100=m +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m CONFIG_8139TOO=y CONFIG_8139TOO_PIO=y # CONFIG_8139TOO_TUNE_TWISTER is not set # CONFIG_8139TOO_8129 is not set # CONFIG_8139_OLD_RX_RESET is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set # CONFIG_NET_POCKET is not set # @@ -765,7 +775,15 @@ CONFIG_S2IO=m # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set -# CONFIG_PPP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m # CONFIG_SLIP is not set # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set @@ -859,7 +877,7 @@ CONFIG_SERIAL_CORE=y # CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LEGACY_PTY_COUNT=128 CONFIG_PRINTER=y # CONFIG_LP_CONSOLE is not set # CONFIG_PPDEV is not set @@ -979,7 +997,7 @@ CONFIG_FB_FIRMWARE_EDID=y # CONFIG_FB_ARC is not set # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set -CONFIG_FB_VGA16=y +# CONFIG_FB_VGA16 is not set CONFIG_FB_VESA=y CONFIG_VIDEO_SELECT=y # CONFIG_FB_HGA is not set @@ -1186,7 +1204,9 @@ CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_SPLIT_ISO is not set # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_OHCI_HCD is not set +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y # CONFIG_USB_SL811_HCD is not set @@ -1503,19 +1523,47 @@ CONFIG_DOUBLEFAULT=y # # Cryptographic options # -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +CONFIG_CRYPTO_SHA1=m +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_AES_586 is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_TEST is not set # # Hardware crypto devices # +# CONFIG_CRYPTO_DEV_PADLOCK is not set # # Library routines # -# CONFIG_CRC_CCITT is not set +CONFIG_CRC_CCITT=m # CONFIG_CRC16 is not set CONFIG_CRC32=y CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y |