extern "C" {
#endif
-typedef struct _Ecore_Wl_Display Ecore_Wl_Display;
+typedef struct _Ecore_Wl_Display Ecore_Wl_Display; /** FIXME: move to private */
+
typedef struct _Ecore_Wl_Output Ecore_Wl_Output;
typedef struct _Ecore_Wl_Input Ecore_Wl_Input;
typedef struct _Ecore_Wl_Global Ecore_Wl_Global; /** @since 1.7.6 */
struct wl_list link;
};
-struct _Ecore_Wl_Display
-{
- struct
- {
- struct wl_display *display;
- struct wl_registry *registry;
- struct wl_compositor *compositor;
- struct wl_subcompositor *subcompositor;
- struct wl_shell *shell;
- struct wl_shell *desktop_shell;
- struct wl_shm *shm;
- struct wl_data_device_manager *data_device_manager;
- } wl;
-
- int fd;
- unsigned int mask;
- unsigned int serial;
- int sync_ref_count;
- Ecore_Fd_Handler *fd_hdl;
- Ecore_Idle_Enterer *idle_enterer;
-
- struct wl_list inputs;
- struct wl_list outputs;
- struct wl_list globals; /** @since 1.7.6 */
-
- Eina_Bool init_done;
-
- struct
- {
- struct xkb_context *context;
- } xkb;
-
- struct wl_cursor_theme *cursor_theme;
-
- Ecore_Wl_Output *output;
- Ecore_Wl_Input *input;
-
- void (*output_configure)(Ecore_Wl_Output *output, void *data);
- void *data;
-};
-
struct _Ecore_Wl_Output
{
Ecore_Wl_Display *display;
# endif
# define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_wl_log_dom, __VA_ARGS__)
+
+struct _Ecore_Wl_Display
+{
+ struct
+ {
+ struct wl_display *display;
+ struct wl_registry *registry;
+ struct wl_compositor *compositor;
+ struct wl_subcompositor *subcompositor;
+ struct wl_shell *shell;
+ struct wl_shell *desktop_shell;
+ struct wl_shm *shm;
+ struct wl_data_device_manager *data_device_manager;
+ } wl;
+
+ int fd;
+ unsigned int mask;
+ unsigned int serial;
+ int sync_ref_count;
+ Ecore_Fd_Handler *fd_hdl;
+ Ecore_Idle_Enterer *idle_enterer;
+
+ struct wl_list inputs;
+ struct wl_list outputs;
+ struct wl_list globals; /** @since 1.7.6 */
+
+ Eina_Bool init_done;
+
+ struct
+ {
+ struct xkb_context *context;
+ } xkb;
+
+ struct wl_cursor_theme *cursor_theme;
+
+ Ecore_Wl_Output *output;
+ Ecore_Wl_Input *input;
+
+ void (*output_configure)(Ecore_Wl_Output *output, void *data);
+ void *data;
+};
+
struct _Ecore_Wl_Dnd
{
Ecore_Wl_Display *ewd;
struct wl_text_input *text_input;
Ecore_Wl_Window *window;
+ Ecore_Wl_Input *input;
Evas *canvas;
char *preedit_text;
if (!input || !input->seat)
return;
+ imcontext->input = input;
+
if (imcontext->text_input)
{
wl_text_input_show_input_panel(imcontext->text_input);
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "focus-out");
- if (!imcontext->window) return;
+ if (!imcontext->input) return;
if (imcontext->text_input)
wl_text_input_deactivate(imcontext->text_input,
- imcontext->window->display->input->seat);
+ imcontext->input->seat);
+
+ imcontext->input = NULL;
}
EAPI void