From e96f049f9a6a1587031b1548ead398ba8f848cea Mon Sep 17 00:00:00 2001 From: "bunam.jeon" Date: Thu, 26 Sep 2013 11:41:59 +0900 Subject: [PATCH] Fixed problem that popup show too long text without popup [Title] Fixed problem that popup show too long text without popup [Issue#] N_SE-52777 [Problem] Popup show too long text without popup [Cause] Does not calculate the height of popup, So not applied scroller. [Solution] Add resize callback of popup. Change-Id: I2ce2f952f1754a543c4a3f4c6cb4d0af1c634b37 --- .../UIProcess/API/efl/tizen/JavaScriptPopup.cpp | 72 +++++++++++----------- .../UIProcess/API/efl/tizen/JavaScriptPopup.edc | 10 ++- .../UIProcess/API/efl/tizen/JavaScriptPopup.h | 4 +- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.cpp b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.cpp index f76d7df..e3260bb 100755 --- a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -40,6 +41,7 @@ namespace WebKit { JavaScriptPopup::JavaScriptPopup(Evas_Object* ewkView) : m_popup(0) + , m_popupMessage(String()) , m_entry(0) , m_ewkView(ewkView) { @@ -70,55 +72,53 @@ static void alertHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo } #endif -bool JavaScriptPopup::setLabelText(const char* message) +static void javascriptPopupResizeCallback(void *data, Evas *e, Evas_Object *obj, void *event_info) { - if (!message) - return false; + if (!obj) + return; - String popupMessage = ("") + String::fromUTF8(elm_entry_utf8_to_markup(message)) + (""); - popupMessage.replace("\n", "
"); + int popupHeight; + evas_object_geometry_get(obj, 0, 0, 0, &popupHeight); - // Set scroll layout to display so long sentences - Evas_Object* layout = elm_layout_add(m_popup); - elm_layout_file_set(layout, EDJE_DIR"/JavaScriptPopup.edj", "scroll"); - evas_object_show(layout); + JavaScriptPopup* popup = static_cast(data); + if (!popup) + return; - Evas_Object* scroller = elm_scroller_add(layout); - elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE); - elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); - evas_object_show(scroller); - elm_object_part_content_set(layout, "scroll_container", scroller); + if (popupHeight > (WebCore::getDefaultScreenResolution().height() / 2)) { + elm_object_text_set(popup->m_popup, ""); - elm_object_content_set(m_popup, layout); + Evas_Object* layout = elm_layout_add(popup->m_popup); + elm_layout_file_set(layout, EDJE_DIR"/JavaScriptPopup.edj", "scroll"); + evas_object_show(layout); - // Get layout width to set a dynamic label wrap width - int layoutWidth; - evas_object_geometry_get(layout, 0, 0, &layoutWidth, 0); + Evas_Object* scroller = elm_scroller_add(layout); + elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE); + elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); - Evas_Object* label = elm_label_add(layout); - elm_label_line_wrap_set(label, ELM_WRAP_MIXED); - elm_label_wrap_width_set(label, layoutWidth); - elm_object_text_set(label, popupMessage.utf8().data()); - evas_object_show(label); + evas_object_show(scroller); + elm_object_part_content_set(layout, "scroll_container", scroller); - elm_object_content_set(scroller, label); + elm_object_content_set(popup->m_popup, layout); - // Get label height for check the length of the character - int labelHeight; - evas_object_geometry_get(label, 0, 0, 0, &labelHeight); + Evas_Object* label = elm_label_add(popup->m_popup); + elm_label_line_wrap_set(label, ELM_WRAP_MIXED); + elm_object_text_set(label, popup->m_popupMessage.utf8().data()); + evas_object_show(label); - // Use the general popup instead of scroll layout when message is a short sentences - if (labelHeight < 400) { - evas_object_del(m_popup); + elm_object_content_set(scroller, label); + } +} - Evas_Object* parent = getParentWindow(); +bool JavaScriptPopup::setLabelText(const char* message) +{ + if (!message) + return false; - m_popup = elm_popup_add(parent); - if (!m_popup) - return false; + m_popupMessage = ("") + String::fromUTF8(elm_entry_utf8_to_markup(message)) + (""); + m_popupMessage.replace("\n", "
"); - elm_object_text_set(m_popup, popupMessage.utf8().data()); - } + elm_object_text_set(m_popup, m_popupMessage.utf8().data()); + evas_object_event_callback_add(m_popup, EVAS_CALLBACK_RESIZE, javascriptPopupResizeCallback, (void*)this); return true; } diff --git a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.edc b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.edc index e10ae8e..28add93 100755 --- a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.edc +++ b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.edc @@ -13,10 +13,14 @@ collections { scale : 1; description { state: "default" 0.0; - align: 0.0 0.0; - min: 0 410; + align: 0.5 0.5; + min: 500 410; + min: 500 410; + rel1 { + offset : 30 30; + } rel2 { - offset: 0 0; + offset : -30 -30; } } } diff --git a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.h b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.h index 1c36593..a22cf55 100644 --- a/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.h +++ b/Source/WebKit2/UIProcess/API/efl/tizen/JavaScriptPopup.h @@ -40,11 +40,13 @@ public: Evas_Object* entry(); void close(); + Evas_Object* m_popup; + String m_popupMessage; + private: bool setLabelText(const char* message); Evas_Object* getParentWindow(); - Evas_Object* m_popup; Evas_Object* m_entry; Evas_Object* m_ewkView; }; -- 2.7.4