msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "슬라이더"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "마지막 항목"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
msgid "IDS_ACCS_TBOPT_SLIDER_TTS"
msgstr "Slider"
+
+msgid "IDS_ACCS_OPT_LAST_ITEM_TTS"
+msgstr "Last item"
}
}
+static void _on_chain_end_read(FlatNaviContext *ctx, search_direction direction)
+{
+ // TODO: consider reading _("IDS_ACCS_OPT_FIRST_ITEM_TTS") for symmetry?
+ if (direction == SEARCH_FORWARD)
+ tw_speak(_("IDS_ACCS_OPT_LAST_ITEM_TTS"), EINA_TRUE);
+}
+
static void _on_chain_end(FlatNaviContext *ctx, search_direction direction)
{
AtspiRole role = atspi_accessible_get_role(ctx->root, NULL);
+ if (role == ATSPI_ROLE_COMBO_BOX)
+ _on_chain_end_read(ctx, direction);
+
+ if (vc_get_sound_feedback())
+ smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
+}
+
+static void _on_chain_end_again(FlatNaviContext *ctx, search_direction direction)
+{
+ AtspiRole role = atspi_accessible_get_role(ctx->root, NULL);
+
// The default is to loop over when the user makes a flick gesture again
// after reaching the end of the focus chain, unless the current context
// is a drop-down menu, in which case we try to close it instead.
"first item reached or failed");
if (ctx->last_entry == (direction == SEARCH_FORWARD ? LAST_ENTRY_LAST : LAST_ENTRY_FIRST)) {
- _on_chain_end(ctx, direction);
+ _on_chain_end_again(ctx, direction);
}
else {
- /* TODO Is it a proper place for sound generation? */
- if (vc_get_sound_feedback())
- smart_notification(FOCUS_CHAIN_END_NOTIFICATION_EVENT, 0, 0);
-
+ _on_chain_end(ctx, direction);
ctx->last_entry = direction == SEARCH_FORWARD ? LAST_ENTRY_LAST : LAST_ENTRY_FIRST;
}
g_object_unref(ret);