conformant: find conformant part's owner again if owner is null before sending update... accepted/tizen/3.0/common/20161214.074546 accepted/tizen/3.0/ivi/20161213.024146 accepted/tizen/3.0/mobile/20161213.024041 accepted/tizen/3.0/tv/20161213.024104 accepted/tizen/3.0/wearable/20161213.024124 accepted/tizen/common/20161212.185446 accepted/tizen/ivi/20161213.002658 accepted/tizen/mobile/20161213.002516 accepted/tizen/tv/20161213.002559 accepted/tizen/wearable/20161213.002634 submit/tizen/20161212.024344 submit/tizen_3.0/20161212.024415
authorSeunghun Lee <shiin.lee@samsung.com>
Sat, 10 Dec 2016 08:22:16 +0000 (17:22 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Mon, 12 Dec 2016 02:33:47 +0000 (11:33 +0900)
since vkbd's parent can be NULL at the time of vkbd's object is shown, so call
'_conf_part_owner_find' again. the better way I think is exporting related API
so that clipboard and vkbd modules can set its owner directly, or we can use
event mechanism, or checking fetch flag every time we enter the idle (but fetch
flag can be false, careful), and calling '_conf_state_update' at that time.
we need to consider using like this.

Change-Id: I1aacedb28571cc3adf525a9cc1490d0500c8c34d

src/bin/e_policy_conformant.c

index dc2e61dc312cc34655007bbd2023bcf0283616d6..09b52247321e61ae46b6a966c12ca68d725cfc81 100644 (file)
@@ -69,6 +69,8 @@ typedef struct
 
 Conformant *_conf = NULL;
 
+static E_Client   *_conf_part_owner_find(E_Client *part, Conformant_Type type);
+
 static Conformant *
 _conf_data_get()
 {
@@ -140,7 +142,24 @@ _conf_state_update(Conformant *conf, Conformant_Type type, Eina_Bool visible, in
    conf->part[type].state.h = h;
 
    if (!conf->part[type].owner)
-     return;
+     {
+        /* WORKAROUND
+         * since vkbd's parent can be NULL at the time of vkbd's object is shown,
+         * call '_conf_part_owner_find' again.
+         * the better way I think is exporting related API so that clipboard and
+         * vkbd modules can set its owner directly, or we can use event
+         * mechanism, or checking fetch flag every time we enter the idle
+         * (but fetch flag can be false, careful), and calling
+         * '_conf_state_update' at that time.
+         * we need to consider using like this.
+         */
+        conf->part[type].owner = _conf_part_owner_find(conf->part[type].ec, type);
+        if (!conf->part[type].owner)
+          {
+             CFINF("NO Client to send change the conformant area");
+             return;
+          }
+     }
 
    conf_type = _conf_type_map(type);