Modified: trunk/Tools/ChangeLog (133266 => 133267)
--- trunk/Tools/ChangeLog 2012-11-02 05:54:31 UTC (rev 133266)
+++ trunk/Tools/ChangeLog 2012-11-02 06:29:05 UTC (rev 133267)
@@ -1,3 +1,19 @@
+2012-11-01 Christophe Dumez <christophe.du...@intel.com>
+
+ [EFL][WK2] Make File Chooser dialog modal in MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=100962
+
+ Reviewed by Gyuyoung Kim.
+
+ Make File Chooser dialog modal in MiniBrowser and make
+ sure it is closed and freed when its parent window is
+ closed.
+
+ * MiniBrowser/efl/main.c:
+ (close_file_picker):
+ (on_filepicker_parent_deletion):
+ (on_file_chooser_request):
+
2012-11-01 Seonae Kim <sunaeluv....@samsung.com>
[EFL][DRT] Support Geolocation
Modified: trunk/Tools/MiniBrowser/efl/main.c (133266 => 133267)
--- trunk/Tools/MiniBrowser/efl/main.c 2012-11-02 05:54:31 UTC (rev 133266)
+++ trunk/Tools/MiniBrowser/efl/main.c 2012-11-02 06:29:05 UTC (rev 133267)
@@ -309,18 +309,28 @@
}
typedef struct {
+ Evas_Object *parent;
Evas_Object *window;
Ewk_File_Chooser_Request *request;
} FileSelectorData;
+static void on_filepicker_parent_deletion(void *user_data, Evas *evas, Evas_Object *window, void *event);
+
static void close_file_picker(FileSelectorData* fs_data)
{
+ evas_object_event_callback_del(fs_data->parent, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion);
evas_object_del(fs_data->window);
ewk_file_chooser_request_unref(fs_data->request);
free(fs_data);
}
static void
+on_filepicker_parent_deletion(void *user_data, Evas *evas, Evas_Object *window, void *event)
+{
+ close_file_picker((FileSelectorData *)user_data);
+}
+
+static void
on_filepicker_deletion(void *user_data, Evas_Object *window, void *event_info)
{
close_file_picker((FileSelectorData *)user_data);
@@ -341,16 +351,21 @@
static void
on_file_chooser_request(void *user_data, Evas_Object *webview, void *event_info)
{
+ Browser_Window *app_data = (Browser_Window *)user_data;
Ewk_File_Chooser_Request *request = (Ewk_File_Chooser_Request *)event_info;
// Show basic file picker which does not currently support multiple files
// or MIME type filtering.
- Evas_Object *window = elm_win_util_standard_add("file-picker-window", "File picker");
+ Evas_Object *window = elm_win_add(app_data->window, "file-picker-window", ELM_WIN_DIALOG_BASIC);
+ elm_win_title_set(window, "File picker");
+ elm_win_modal_set(window, EINA_TRUE);
FileSelectorData* fs_data = (FileSelectorData*)malloc(sizeof(FileSelectorData));
+ fs_data->parent = app_data->window;
fs_data->window = window;
fs_data->request = ewk_file_chooser_request_ref(request);
evas_object_smart_callback_add(window, "delete,request", on_filepicker_deletion, fs_data);
+ evas_object_event_callback_add(app_data->window, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion, fs_data);
Evas_Object *file_selector = elm_fileselector_add(window);
const char *home_path = getenv("HOME");