static void
_elm_win_opaque_update(Elm_Win_Data *sd)
{
- int ox, oy, ow, oh;
+ int ox = 0, oy = 0, ow = 0, oh = 0;
if (sd->fullscreen)
{
return;
}
- edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.opaque",
- &ox, &oy, &ow, &oh);
+ if (sd->frame_obj)
+ edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.opaque",
+ &ox, &oy, &ow, &oh);
ecore_wl_window_opaque_region_set(sd->wl.win, ox, oy, ow, oh);
ecore_wl_window_update_location(sd->wl.win, sd->screen.x + ox, sd->screen.y + oy);
}
static void
_elm_win_frame_obj_update(Elm_Win_Data *sd)
{
- int fx, fy, fw, fh;
- int ox, oy, ow, oh;
+ int fx = 0, fy = 0, fw = 0, fh = 0;
+ int ox = 0, oy = 0, ow = 0, oh = 0;
#ifdef HAVE_ELEMENTARY_WAYLAND
sd->wl.opaque_dirty = 1;
#endif
- if (sd->fullscreen)
+ if (sd->fullscreen || !sd->frame_obj)
{
evas_output_framespace_set(sd->evas, 0, 0, 0, 0);
return;
{
const char *emission;
+ if (!sd->frame_obj) return;
+
if (maximized)
emission = "elm,state,maximized";
else
i = sd->rot / 90;
if (mode == ELM_WIN_MOVE_RESIZE_MOVE)
{
- int ox, oy;
- sd->resizing = EINA_TRUE;
- edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.opaque",
- &ox, &oy, NULL, NULL);
- ecore_evas_wayland_move(sd->ee, ox, oy);
- res = EINA_TRUE;
+ if (sd->wl.win)
+ {
+ sd->resizing = EINA_TRUE;
+ ecore_wl_window_pointer_set(sd->wl.win, NULL,
+ sd->pointer.hot_x, sd->pointer.hot_y);
+
+ /* Note: Not passing any X,Y position as those don't make sense, only
+ * the compositor can really handle the window & pointer position. */
+ ecore_evas_wayland_move(sd->ee, 0, 0);
+ res = EINA_TRUE;
+ }
}
else
{