#include "wrt/src/browser/tv/popup_tv.h"
#include <aul.h>
+#include <aul_window.h>
#include "base/files/file_path.h"
#include "base/path_service.h"
}
}
+// static
+void PopupTV::PopupFocusOutCb(void* data, Evas_Object* obj, void* event_info) {
+ int self_pid = getpid();
+ int focus_pid = 0;
+ int ret = aul_window_get_focused_pid(&focus_pid);
+ if (0 != ret) {
+ LOG(ERROR) << " aul_window_get_focused_pid fail, ret = " << ret;
+ return;
+ }
+ LOG(INFO) << "self_pid is " << self_pid << ", focus_pid is " << focus_pid;
+
+ if (self_pid != focus_pid)
+ return;
+
+ for (auto iterator = opened_popups_.begin(); iterator != opened_popups_.end();
+ ++iterator) {
+ if (iterator->get() == data) {
+ PopupTV* popup = static_cast<PopupTV*>(data);
+ elm_object_signal_emit(popup->button1_, "elm,action,click", "elm");
+ return;
+ }
+ }
+ LOG(ERROR) << "Fail to get Popup instance";
+}
+
// static
std::unique_ptr<PopupTV> PopupTV::GetPopupById(int id) {
LOG(INFO) << "get popup id: " << id;
PopupTV::PopupTV(Evas_Object* popup, Evas_Object* box, Evas_Object* window)
: Popup(popup, box), window_(window) {
+ LOG(INFO) << "PopupTV!";
auto main_native_window = WRTNativeWindow::GetMainNativeWindow();
if (main_native_window)
main_native_window->AddObserver(this);
-
popup_id_ = ++popup_id_counter;
+ evas_object_smart_callback_add(popup, "unfocused", PopupTV::PopupFocusOutCb,
+ this);
}
PopupTV::~PopupTV() {
static std::unique_ptr<PopupTV> GetPopupById(int id);
static void ShowVoiceRecognitionToast(const std::string& app_title);
static void HideVoiceRecognitionToast();
+ static void PopupFocusOutCb(void* data, Evas_Object* obj, void* event_info);
// Popup
void SetButtonType(ButtonType type) override;