Index: src/lib/elc_popup.c
===================================================================
--- src/lib/elc_popup.c	(revision 69929)
+++ src/lib/elc_popup.c	(working copy)
@@ -98,6 +98,8 @@ static Evas_Object *_action_button_get(Evas_Object
 static Evas_Object *_action_button_unset(Evas_Object *obj, unsigned int idx);
 static void _button_remove(Evas_Object *obj, Evas_Object *content,
                            Eina_Bool delete);
+static void _popup_show(void *data, Evas *e, Evas_Object *obj,
+                        void *event_info);
 static const char SIG_BLOCK_CLICKED[] = "block,clicked";
 static const char SIG_TIMEOUT[] = "timeout";
 static const Evas_Smart_Cb_Description _signals[] = {
@@ -147,6 +149,7 @@ _del_pre_hook(Evas_Object *obj)
    evas_object_smart_callback_del(wd->notify, "timeout", _timeout);
    evas_object_event_callback_del(wd->notify, EVAS_CALLBACK_RESIZE,
                                   _notify_resize);
+   evas_object_event_callback_del(obj, EVAS_CALLBACK_SHOW, _popup_show);
    wd->button_count = 0;
    for (i = 0; i < ELM_POPUP_ACTION_BUTTON_MAX; i++)
      if (wd->buttons[i])
@@ -737,6 +740,7 @@ _content_set(Evas_Object *obj, Evas_Object *conten
                                     wd->content_area);
         elm_object_part_content_set(wd->content_area, "elm.swallow.content",
                                     content);
+        evas_object_show(content);
      }
    _sizing_eval(obj);
 }
@@ -776,11 +780,14 @@ _button_remove(Evas_Object *obj, Evas_Object *cont
        elm_object_part_content_unset(wd->action_area, buf);
        elm_object_part_content_set(wd->action_area, buf,
                                    wd->buttons[i]->btn);
+       evas_object_show(wd->buttons[i]->btn);
        wd->buttons[i]->delete_me = EINA_TRUE;
     }
    if (!wd->button_count)
     {
        _layout_set(obj);
+       elm_object_part_content_unset(wd->base, "elm.swallow.action_area");
+       evas_object_hide(wd->action_area);
        edje_object_message_signal_process(elm_layout_edje_get(wd->base));
     }
    else
@@ -829,6 +836,7 @@ _action_button_set(Evas_Object *obj, Evas_Object *
              elm_object_part_content_unset(wd->action_area, buf);
              elm_object_part_content_set(wd->action_area, buf,
                                          wd->buttons[i]->btn);
+             evas_object_show(wd->buttons[i]->btn);
              /* Setting delete_me to TRUE in order to let _sub_del handle it
                 if deleted externally and update the buttons array after freeing
                 action data allocated earlier.
@@ -837,6 +845,7 @@ _action_button_set(Evas_Object *obj, Evas_Object *
           }
         elm_object_part_content_set(wd->base, "elm.swallow.action_area",
                                     wd->action_area);
+        evas_object_show(wd->action_area);
         if (wd->button_count == 1)
           _layout_set(obj);
         edje_object_message_signal_process(wd->base);
@@ -1026,9 +1035,13 @@ _focus_next_hook(const Evas_Object *obj __UNUSED__
                  Elm_Focus_Direction dir __UNUSED__,
                  Evas_Object **next __UNUSED__)
 {
-   //TODO: Implement Focus chanin Handling in Popup for action area buttons
-   return EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+
+   if (!wd)
+     return EINA_FALSE;
+   return elm_widget_focus_next_get(wd->notify, dir, next);
 }
+
 static void
 _item_text_set(Elm_Popup_Content_Item *item, const char *label)
 {
@@ -1226,6 +1239,7 @@ elm_popup_add(Evas_Object *parent)
    elm_widget_content_set_hook_set(obj, _content_set_hook);
    elm_widget_content_get_hook_set(obj, _content_get_hook);
    elm_widget_content_unset_hook_set(obj,_content_unset_hook);
+   elm_widget_can_focus_set(obj, EINA_FALSE);
    elm_widget_focus_next_hook_set(obj, _focus_next_hook);
    evas_object_smart_callbacks_descriptions_set(obj, _signals);
 
Index: data/themes/widgets/popup.edc
===================================================================
--- data/themes/widgets/popup.edc	(revision 69929)
+++ data/themes/widgets/popup.edc	(working copy)
@@ -257,14 +257,9 @@ group { name: "elm/popup/base/default";
          scale : 1;
          description { state: "default" 0.0;
             align: 0.0 0.0;
-            visible: 0;
             rel1.to: "elm.bg.action_area";
             rel2.to: "elm.bg.action_area";
          }
-         description { state: "visible" 0.0;
-            inherit: "default" 0.0;
-            visible: 1;
-         }
       }
    }
    programs {
@@ -333,7 +328,6 @@ group { name: "elm/popup/base/default";
             else
               set_state(PART:"elm.swallow.content", "show_action_area", 0.0);
             set_state(PART:"elm.bg.action_area", "visible", 0.0);
-            set_state(PART:"elm.swallow.action_area", "visible", 0.0);
          }
       }
       program { name: hide_action_area;
@@ -349,7 +343,6 @@ group { name: "elm/popup/base/default";
             else
               set_state(PART:"elm.swallow.content", "default", 0.0);
             set_state(PART:"elm.bg.action_area", "default", 0.0);
-            set_state(PART:"elm.swallow.action_area", "default", 0.0);
          }
       }
    } /* end of programs */
