762a3f89a9
This will be used by the next commit to determine when a window geometry change should be ignored or not. Normally, it would be enough to just check if the position and sizes changed. The position, in this case, is relative to the client buffer, not the global position. But because it is not global, there is one, admitedly unlikely, situation where the window state is updated while the client size and relative positions don't change. One can trigger this by e.g. tiling the window to the half-left of the monitor, then immediately tile it to half-right. In this case, the window didn't change, just it's state, but nonetheless we need to notify the compositor and run the full move/resize routines. When that case happens, though, the MetaWindowWayland is tracking the pending state change or a move. And this is what we need to expose. https://bugzilla.gnome.org/show_bug.cgi?id=780292 Issue: #78
83 lines
3.6 KiB
C
83 lines
3.6 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright (C) 2014 Red Hat
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*
|
|
* Written by:
|
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
|
*/
|
|
|
|
#ifndef META_WINDOW_WAYLAND_H
|
|
#define META_WINDOW_WAYLAND_H
|
|
|
|
#include "core/window-private.h"
|
|
#include <meta/window.h>
|
|
#include "wayland/meta-wayland-types.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define META_TYPE_WINDOW_WAYLAND (meta_window_wayland_get_type())
|
|
#define META_WINDOW_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_WINDOW_WAYLAND, MetaWindowWayland))
|
|
#define META_WINDOW_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_WINDOW_WAYLAND, MetaWindowWaylandClass))
|
|
#define META_IS_WINDOW_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_WINDOW_WAYLAND))
|
|
#define META_IS_WINDOW_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_WINDOW_WAYLAND))
|
|
#define META_WINDOW_WAYLAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_WINDOW_WAYLAND, MetaWindowWaylandClass))
|
|
|
|
GType meta_window_wayland_get_type (void);
|
|
|
|
typedef struct _MetaWindowWayland MetaWindowWayland;
|
|
typedef struct _MetaWindowWaylandClass MetaWindowWaylandClass;
|
|
|
|
MetaWindow * meta_window_wayland_new (MetaDisplay *display,
|
|
MetaWaylandSurface *surface);
|
|
|
|
void meta_window_wayland_move_resize (MetaWindow *window,
|
|
MetaWaylandSerial *acked_configure_serial,
|
|
MetaRectangle new_geom,
|
|
int dx,
|
|
int dy);
|
|
int meta_window_wayland_get_geometry_scale (MetaWindow *window);
|
|
|
|
void meta_window_wayland_place_relative_to (MetaWindow *window,
|
|
MetaWindow *other,
|
|
int x,
|
|
int y);
|
|
|
|
void meta_window_place_with_placement_rule (MetaWindow *window,
|
|
MetaPlacementRule *placement_rule);
|
|
|
|
void meta_window_wayland_set_min_size (MetaWindow *window,
|
|
int width,
|
|
int height);
|
|
|
|
void meta_window_wayland_set_max_size (MetaWindow *window,
|
|
int width,
|
|
int height);
|
|
|
|
void meta_window_wayland_get_min_size (MetaWindow *window,
|
|
int *width,
|
|
int *height);
|
|
|
|
|
|
void meta_window_wayland_get_max_size (MetaWindow *window,
|
|
int *width,
|
|
int *height);
|
|
|
|
gboolean meta_window_wayland_needs_move_resize (MetaWindow *window);
|
|
|
|
#endif
|