Title: [133267] trunk/Tools
Revision
133267
Author
commit-qu...@webkit.org
Date
2012-11-01 23:29:05 -0700 (Thu, 01 Nov 2012)

Log Message

[EFL][WK2] Make File Chooser dialog modal in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=100962

Patch by Christophe Dumez <christophe.du...@intel.com> on 2012-11-01
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):

Modified Paths

Diff

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");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to