Index: src/lib/elc_ctxpopup.c
===================================================================
--- src/lib/elc_ctxpopup.c	(리비전 76325)
+++ src/lib/elc_ctxpopup.c	(작업 사본)
@@ -280,6 +280,28 @@
 }
 
 static void
+_mirrored_set(Evas_Object *obj, Elm_Ctxpopup_Direction *dir)
+{
+   Eina_Bool rtl;
+   rtl = elm_widget_mirrored_get(obj);
+   if (!rtl) return;
+
+   switch (*dir)
+     {
+      case ELM_CTXPOPUP_DIRECTION_LEFT:
+        *dir = ELM_CTXPOPUP_DIRECTION_RIGHT;
+        break;
+
+      case ELM_CTXPOPUP_DIRECTION_RIGHT:
+        *dir = ELM_CTXPOPUP_DIRECTION_LEFT;
+        break;
+
+      default:
+        break;
+     }
+}
+
+static void
 _arrow_update(Evas_Object *obj,
               Elm_Ctxpopup_Direction dir,
               Evas_Coord_Rectangle base_size)
@@ -296,11 +318,14 @@
 
    /* arrow is not being kept as sub-object on purpose, here. the
     * design of the widget does not help with the contrary */
-
+   _mirrored_set(obj, &dir);
    switch (dir)
      {
       case ELM_CTXPOPUP_DIRECTION_RIGHT:
-        edje_object_signal_emit(sd->arrow, "elm,state,left", "elm");
+        edje_object_signal_emit(sd->arrow,
+                                elm_widget_mirrored_get(obj) ?
+                                "elm,state,right" : "elm,state,left",
+                                "elm");
         edje_object_part_swallow
           (ELM_WIDGET_DATA(sd)->resize_obj, "elm.swallow.arrow_left",
           sd->arrow);
@@ -320,7 +345,10 @@
         break;
 
       case ELM_CTXPOPUP_DIRECTION_LEFT:
-        edje_object_signal_emit(sd->arrow, "elm,state,right", "elm");
+        edje_object_signal_emit(sd->arrow,
+                                elm_widget_mirrored_get(obj) ?
+                                "elm,state,left" : "elm,state,right",
+                                "elm");
         edje_object_part_swallow
           (ELM_WIDGET_DATA(sd)->resize_obj, "elm.swallow.arrow_right",
           sd->arrow);
@@ -398,6 +426,7 @@
    if (!sd->visible) return;
    if ((sd->list) && (!sd->list_visible)) return;
 
+   _mirrored_set(obj, &dir);
    switch (dir)
      {
       case ELM_CTXPOPUP_DIRECTION_UP:
@@ -432,6 +461,7 @@
 
    if (!sd->visible) return;
 
+   _mirrored_set(obj, &dir);
    switch (dir)
      {
       case ELM_CTXPOPUP_DIRECTION_UP:
