# define E_COMP_TYPE (int) 0xE0b01003
-# define E_LAYER_COUNT 23
-# define E_CLIENT_LAYER_COUNT 15
+# define E_LAYER_COUNT 24
+# define E_CLIENT_LAYER_COUNT 16
typedef enum _E_Layer
{
E_LAYER_CLIENT_TOP = 500,
E_LAYER_CLIENT_DRAG = 550,
E_LAYER_CLIENT_PRIO = 600,
- E_LAYER_CLIENT_NOTIFICATION_LOW = 700,
- E_LAYER_CLIENT_NOTIFICATION_NORMAL = 750,
- E_LAYER_CLIENT_NOTIFICATION_HIGH = 800,
+ E_LAYER_CLIENT_NOTIFICATION_LOW = 650,
+ E_LAYER_CLIENT_NOTIFICATION_NORMAL = 700,
+ E_LAYER_CLIENT_NOTIFICATION_HIGH = 750,
+ E_LAYER_CLIENT_NOTIFICATION_TOP = 800,
E_LAYER_CLIENT_ALERT = 850,
E_LAYER_POPUP = 999, // popups
E_LAYER_MENU = 5000, // menus
case 15: return E_LAYER_CLIENT_NOTIFICATION_LOW;
case 16: return E_LAYER_CLIENT_NOTIFICATION_NORMAL;
case 17: return E_LAYER_CLIENT_NOTIFICATION_HIGH;
- case 18: return E_LAYER_CLIENT_ALERT;
- case 19: return E_LAYER_POPUP;
- case 20: return E_LAYER_MENU;
- case 21: return E_LAYER_DESKLOCK;
- case 22: return E_LAYER_MAX;
+ case 18: return E_LAYER_CLIENT_NOTIFICATION_TOP;
+ case 19: return E_LAYER_CLIENT_ALERT;
+ case 20: return E_LAYER_POPUP;
+ case 21: return E_LAYER_MENU;
+ case 22: return E_LAYER_DESKLOCK;
+ case 23: return E_LAYER_MAX;
default: break;
}
return -INT_MAX;
case E_LAYER_CLIENT_NOTIFICATION_LOW: return 15;
case E_LAYER_CLIENT_NOTIFICATION_NORMAL: return 16;
case E_LAYER_CLIENT_NOTIFICATION_HIGH: return 17;
- case E_LAYER_CLIENT_ALERT: return 18;
- case E_LAYER_POPUP: return 19;
- case E_LAYER_MENU: return 20;
- case E_LAYER_DESKLOCK: return 21;
- case E_LAYER_MAX: return 22;
+ case E_LAYER_CLIENT_NOTIFICATION_TOP: return 18;
+ case E_LAYER_CLIENT_ALERT: return 19;
+ case E_LAYER_POPUP: return 20;
+ case E_LAYER_MENU: return 21;
+ case E_LAYER_DESKLOCK: return 22;
+ case E_LAYER_MAX: return 23;
default: break;
}
return 9999;
case E_LAYER_CLIENT_NOTIFICATION_LOW: return 11;
case E_LAYER_CLIENT_NOTIFICATION_NORMAL: return 12;
case E_LAYER_CLIENT_NOTIFICATION_HIGH: return 13;
- case E_LAYER_CLIENT_ALERT: return 14;
+ case E_LAYER_CLIENT_NOTIFICATION_TOP: return 14;
+ case E_LAYER_CLIENT_ALERT: return 15;
default: break;
}
return 9999;
LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_LOW);
LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_NORMAL);
LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_HIGH);
+ LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_TOP);
return E_LAYER_CLIENT_ALERT;
}
ec->comp_data->accepts_focus = p_cdata->accepts_focus;
ec->comp_data->conformant = p_cdata->conformant;
ec->comp_data->aux_hint.hints = p_cdata->aux_hint.hints;
+ ec->comp_data->win_type = p_cdata->win_type;
+ ec->comp_data->layer = p_cdata->layer;
+ ec->comp_data->fetch.win_type = p_cdata->fetch.win_type;
+ ec->comp_data->fetch.layer = p_cdata->fetch.layer;
/* add this client to the hash */
/* eina_hash_add(clients_win_hash, &win, ec); */
Eina_Bool opaque_state : 1;
unsigned char accepts_focus : 1;
unsigned char conformant : 1;
+ E_Window_Type win_type;
+ E_Layer layer;
+
+ struct
+ {
+ unsigned char win_type : 1;
+ unsigned char layer : 1;
+ } fetch;
};
struct _E_Comp_Wl_Output
E_Comp_Client_Data *p_cdata = e_pixmap_cdata_get(ep);
EINA_SAFETY_ON_NULL_RETURN(p_cdata);
ec->icccm.accepts_focus = ec->icccm.take_focus = p_cdata->accepts_focus;
+
+ if (p_cdata->fetch.win_type)
+ {
+ ec->netwm.type = p_cdata->win_type;
+ p_cdata->fetch.win_type = 0;
+ }
+ if (p_cdata->fetch.layer)
+ {
+ ec->layer = p_cdata->layer;
+ p_cdata->fetch.layer = 0;
+ evas_object_layer_set(ec->frame, ec->layer);
+ ELOG("LAYER_SET", ec->pixmap, ec);
+ }
}
static void