[maemo-commits] [maemo-commits] r12987 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Aug 1 18:02:29 EEST 2007
- Previous message: [maemo-commits] r12986 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r12988 - in projects/haf/trunk/hildon-desktop: . background-manager src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-08-01 18:02:24 +0300 (Wed, 01 Aug 2007) New Revision: 12987 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c projects/haf/trunk/hildon-desktop/src/hd-desktop.c projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c projects/haf/trunk/hildon-desktop/src/hn-app-button.c projects/haf/trunk/hildon-desktop/src/hn-others-button.c Log: 2007-08-01 Mohammad Anwari <mdamt at maemo.org> Right-to-left dance: * src/hd-desktop.c: - Mirror the x value and the orientation. * src/hd-applications-menu.c, src/hn-app-button.c, src/hn-others-button.c, src/hd-switcher-menu.c: - Mirror the keypress (e.g. you press right button in LTR but it should be left button in RTL). * libhildondesktop/hildon-desktop-popup-menu.c: - Adjust the x position of the child widget in RTL. * libhildondesktop/hildon-home-titlebar.c: - Mirror the x position of the menu in RTL. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-08-01 15:02:24 UTC (rev 12987) @@ -1,3 +1,17 @@ +2007-08-01 Mohammad Anwari <mdamt at maemo.org> + + Right-to-left dance: + * src/hd-desktop.c: + - Mirror the x value and the orientation. + * src/hd-applications-menu.c, src/hn-app-button.c, + src/hn-others-button.c, src/hd-switcher-menu.c: + - Mirror the keypress (e.g. you press right button in LTR but + it should be left button in RTL). + * libhildondesktop/hildon-desktop-popup-menu.c: + - Adjust the x position of the child widget in RTL. + * libhildondesktop/hildon-home-titlebar.c: + - Mirror the x position of the menu in RTL. + 2007-08-01 Johan Bilien <johan.bilien at nokia.com> * configure.ac: 0.0.28 Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -76,6 +76,8 @@ gboolean resize_parent; guint toggle_size; + + gboolean rtl; }; static GObject *hildon_desktop_popup_menu_constructor (GType gtype, @@ -223,6 +225,7 @@ params); menu = HILDON_DESKTOP_POPUP_MENU (object); + menu->priv->rtl = (gtk_widget_get_direction (GTK_WIDGET (menu)) == GTK_TEXT_DIR_RTL); menu->priv->viewport = gtk_viewport_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (menu), @@ -319,9 +322,14 @@ child_allocation.width = allocation->width; child_allocation.height = child_requisition.height; - child_allocation.x = 0; + + if (priv->rtl) + child_allocation.x = child_allocation.width; + else + child_allocation.x = 0; + child_allocation.y = height; - + gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (child), priv->toggle_size); @@ -772,7 +780,7 @@ previous_selected_item = menu->priv->selected_item; children = gtk_container_get_children (GTK_CONTAINER (menu->priv->box_items)); - + if (children) { l = item = g_list_find (children, menu->priv->selected_item); @@ -937,7 +945,7 @@ { if (l->data == item) { - gtk_menu_item_activate (GTK_MENU_ITEM (item)); + gtk_menu_item_activate (GTK_MENU_ITEM (item)); break; } } Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -174,7 +174,14 @@ "vertical-offset", &v_offset, NULL); - *x += widget->allocation.x + h_offset; + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) + { + *x += widget->allocation.width - GTK_WIDGET (menu)->allocation.width - h_offset; + } + else + { + *x += widget->allocation.x + h_offset; + } *y += widget->allocation.y + widget->allocation.height + v_offset; *push_in = FALSE; Modified: projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -246,10 +246,29 @@ GdkEventKey *event, HDApplicationsMenu *button) { + gboolean activate_menu = FALSE, cancel_menu = FALSE; + HDWM *hdwm = hd_wm_get_singleton (); - if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left || + if (gtk_widget_get_direction (menu) == GTK_TEXT_DIR_RTL) + { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + activate_menu = TRUE; + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } + else + { + if (event->keyval == GDK_Right) + activate_menu = TRUE; + else if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (cancel_menu || event->keyval == GDK_Escape) { if (hd_applications_menu_has_focus (button->priv->menu_applications)) @@ -291,8 +310,7 @@ else if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter || event->keyval == GDK_ISO_Enter || - event->keyval == GDK_Right || - event->keyval == GDK_KP_Right) + activate_menu) { if (hd_applications_menu_has_focus (button->priv->menu_categories)) { @@ -397,7 +415,7 @@ { gtk_widget_grab_focus (GTK_WIDGET (item)); } - + button->priv->focus_applications = FALSE; } @@ -1131,17 +1149,37 @@ GdkEventKey *event, HDApplicationsMenu *button) { + gboolean activate_button = FALSE, cancel_button = FALSE; + g_return_val_if_fail (button, FALSE); - if (event->keyval == GDK_Right || - event->keyval == GDK_KP_Enter) + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left || + event->keyval == GDK_KP_Enter) + activate_button = TRUE; + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_button = TRUE; + } + else + { + if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Enter) + activate_button = TRUE; + else if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_button = TRUE; + } + + if (activate_button) + { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button->priv->button), TRUE); return TRUE; } - else if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left) + else if (cancel_button) { gtk_widget_grab_focus (widget); Modified: projects/haf/trunk/hildon-desktop/src/hd-desktop.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-desktop.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/src/hd-desktop.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -1149,7 +1149,7 @@ "height", height, "orientation", orientation, "stretch", TRUE, - NULL); + NULL); } else if (!g_ascii_strcasecmp (type, HD_CONTAINER_TYPE_PANEL_EXPANDABLE)) { @@ -1168,6 +1168,24 @@ NULL); } + if (gtk_widget_get_direction (info->container) == GTK_TEXT_DIR_RTL) + { + HildonDesktopPanelWindowOrientation new_orientation; + gint new_x; + + /* Mirror the values in RTL mode */ + new_x = gdk_screen_get_width (gdk_screen_get_default ()) - x - width; + + new_orientation = (orientation == HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_LEFT ? + HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_RIGHT : + HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_LEFT); + + g_object_set (info->container, + "x", new_x, + "orientation", new_orientation, + NULL); + } + g_free (orientation_str); } else Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -332,11 +332,30 @@ GdkEventKey *event, HDSwitcherMenu *switcher) { + gboolean activate_menu = FALSE, cancel_menu = FALSE; + HildonDesktopPopupWindow *window = HILDON_DESKTOP_POPUP_WINDOW (widget); - if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left || + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) + { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + activate_menu = TRUE; + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } + else + { + if (event->keyval == GDK_Right) + activate_menu = TRUE; + else if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (cancel_menu || event->keyval == GDK_Escape) { hildon_desktop_popup_window_popdown (window); @@ -364,8 +383,7 @@ return TRUE; } else - if (event->keyval == GDK_Right || - event->keyval == GDK_KP_Right) + if (activate_menu) { GList *notifications = hildon_desktop_popup_menu_get_children @@ -398,9 +416,23 @@ GdkEventKey *event, HDSwitcherMenu *switcher) { - if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left) + gboolean cancel_menu = FALSE; + + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) { + if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } + else + { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (cancel_menu) + { hildon_desktop_popup_window_jump_to_pane (switcher->priv->popup_window, -1); @@ -421,16 +453,34 @@ GdkEventKey *event, HDSwitcherMenu *switcher) { - if (event->keyval == GDK_Right || - event->keyval == GDK_KP_Right) + gboolean activate_menu = FALSE, cancel_menu = FALSE; + + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + activate_menu = TRUE; + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } + else + { + if (event->keyval == GDK_Right) + activate_menu = TRUE; + else if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (activate_menu) + { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (switcher->priv->toggle_button), TRUE); return TRUE; } - else if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left) + else if (cancel_menu) { gtk_widget_grab_focus (widget); Modified: projects/haf/trunk/hildon-desktop/src/hn-app-button.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hn-app-button.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/src/hn-app-button.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -537,10 +537,24 @@ static gboolean menu_keypress_cb (GtkWidget *menu, GdkEventKey *event, HNAppButton * app_button) { + gboolean cancel_menu = FALSE; + g_return_val_if_fail(event, FALSE); - if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left || + if (gtk_widget_get_direction (menu) == GTK_TEXT_DIR_RTL) + { + if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } + else + { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (cancel_menu || event->keyval == GDK_Escape) { gtk_menu_shell_deactivate (GTK_MENU_SHELL (menu)); Modified: projects/haf/trunk/hildon-desktop/src/hn-others-button.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hn-others-button.c 2007-08-01 14:58:27 UTC (rev 12986) +++ projects/haf/trunk/hildon-desktop/src/hn-others-button.c 2007-08-01 15:02:24 UTC (rev 12987) @@ -247,10 +247,22 @@ GdkEventKey *event, HNOthersButton *button) { + gboolean cancel_menu = FALSE; HDWM *hdwm = hd_wm_get_singleton (); - if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left || + if (gtk_widget_get_direction (menu) == GTK_TEXT_DIR_RTL) + { + if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_menu = TRUE; + } else + { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_menu = TRUE; + } + + if (cancel_menu || event->keyval == GDK_Escape) { gtk_menu_shell_deactivate (GTK_MENU_SHELL (menu)); @@ -873,19 +885,39 @@ GdkEventKey *event, HNOthersButton *button) { + gboolean activate_button = FALSE, cancel_button = FALSE; + g_return_val_if_fail (button, FALSE); - if (event->keyval == GDK_Right || - event->keyval == GDK_KP_Enter) + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) { + if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left || + event->keyval == GDK_KP_Enter) + activate_button = TRUE; + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) + cancel_button = TRUE; + } + else + { + if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Enter) + activate_button = TRUE; + else if (event->keyval == GDK_Left || + event->keyval == GDK_KP_Left) + cancel_button = TRUE; + } + + if (activate_button) + { hn_others_button_menu_show (button); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button->priv->button), TRUE); return TRUE; } - else if (event->keyval == GDK_Left || - event->keyval == GDK_KP_Left) + else if (cancel_button) { gtk_widget_grab_focus (widget);
- Previous message: [maemo-commits] r12986 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r12988 - in projects/haf/trunk/hildon-desktop: . background-manager src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]