2008-05-19 00:00:09 +00:00
|
|
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (C) 2008 Iain Holmes
|
|
|
|
*
|
|
|
|
* 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
|
2014-01-12 01:42:06 +00:00
|
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
2008-05-19 00:00:09 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef META_DISPLAY_H
|
|
|
|
#define META_DISPLAY_H
|
|
|
|
|
2008-12-02 22:58:07 +00:00
|
|
|
#include <glib-object.h>
|
2008-05-19 00:00:09 +00:00
|
|
|
#include <X11/Xlib.h>
|
|
|
|
|
2011-03-06 00:29:12 +00:00
|
|
|
#include <meta/types.h>
|
|
|
|
#include <meta/prefs.h>
|
|
|
|
#include <meta/common.h>
|
2017-08-26 19:22:34 +00:00
|
|
|
#include <meta/workspace.h>
|
2018-12-09 11:44:20 +00:00
|
|
|
#include <meta/meta-sound-player.h>
|
2018-08-22 20:56:18 +00:00
|
|
|
#include <meta/meta-startup-notification.h>
|
2008-05-19 00:00:09 +00:00
|
|
|
|
2013-02-15 18:42:08 +00:00
|
|
|
/**
|
|
|
|
* MetaTabList:
|
|
|
|
* @META_TAB_LIST_NORMAL: Normal windows
|
|
|
|
* @META_TAB_LIST_DOCKS: Dock windows
|
|
|
|
* @META_TAB_LIST_GROUP: Groups
|
|
|
|
* @META_TAB_LIST_NORMAL_ALL: All windows
|
|
|
|
*/
|
2009-02-02 17:01:27 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_TAB_LIST_NORMAL,
|
|
|
|
META_TAB_LIST_DOCKS,
|
2012-03-12 22:00:12 +00:00
|
|
|
META_TAB_LIST_GROUP,
|
|
|
|
META_TAB_LIST_NORMAL_ALL
|
2009-02-02 17:01:27 +00:00
|
|
|
} MetaTabList;
|
|
|
|
|
2013-02-15 18:42:08 +00:00
|
|
|
/**
|
|
|
|
* MetaTabShowType:
|
|
|
|
* @META_TAB_SHOW_ICON: Show icon (Alt-Tab mode)
|
|
|
|
* @META_TAB_SHOW_INSTANTLY: Show instantly (Alt-Esc mode)
|
|
|
|
*/
|
2009-02-02 17:01:27 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_TAB_SHOW_ICON, /* Alt-Tab mode */
|
|
|
|
META_TAB_SHOW_INSTANTLY /* Alt-Esc mode */
|
|
|
|
} MetaTabShowType;
|
|
|
|
|
2016-06-22 17:01:31 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_PAD_ACTION_BUTTON, /* Action is a button */
|
|
|
|
META_PAD_ACTION_RING, /* Action is a ring */
|
|
|
|
META_PAD_ACTION_STRIP, /* Action is a strip */
|
|
|
|
} MetaPadActionType;
|
|
|
|
|
2008-12-02 22:58:07 +00:00
|
|
|
typedef struct _MetaDisplayClass MetaDisplayClass;
|
|
|
|
|
|
|
|
#define META_TYPE_DISPLAY (meta_display_get_type ())
|
|
|
|
#define META_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), META_TYPE_DISPLAY, MetaDisplay))
|
|
|
|
#define META_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_DISPLAY, MetaDisplayClass))
|
|
|
|
#define META_IS_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), META_TYPE_DISPLAY))
|
|
|
|
#define META_IS_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_DISPLAY))
|
|
|
|
#define META_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_DISPLAY, MetaDisplayClass))
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2008-12-02 22:58:07 +00:00
|
|
|
GType meta_display_get_type (void) G_GNUC_CONST;
|
|
|
|
|
2008-05-19 00:00:09 +00:00
|
|
|
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2012-07-30 18:57:53 +00:00
|
|
|
gboolean meta_display_supports_extended_barriers (MetaDisplay *display);
|
2017-08-26 16:24:46 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-12-26 06:49:27 +00:00
|
|
|
void meta_display_close (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
|
|
|
|
2021-03-03 15:05:09 +00:00
|
|
|
META_EXPORT
|
|
|
|
MetaContext * meta_display_get_context (MetaDisplay *display);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 16:24:46 +00:00
|
|
|
MetaCompositor *meta_display_get_compositor (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 16:24:46 +00:00
|
|
|
MetaX11Display *meta_display_get_x11_display (MetaDisplay *display);
|
2008-05-19 00:00:09 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2008-05-19 00:00:09 +00:00
|
|
|
MetaWindow *meta_display_get_focus_window (MetaDisplay *display);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2010-04-17 18:43:08 +00:00
|
|
|
gboolean meta_display_xserver_time_is_before (MetaDisplay *display,
|
|
|
|
guint32 time1,
|
|
|
|
guint32 time2);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2010-04-17 18:43:08 +00:00
|
|
|
guint32 meta_display_get_last_user_time (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2008-11-25 15:24:48 +00:00
|
|
|
guint32 meta_display_get_current_time (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2008-11-25 15:24:48 +00:00
|
|
|
guint32 meta_display_get_current_time_roundtrip (MetaDisplay *display);
|
2008-05-19 00:00:09 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2009-02-02 17:01:27 +00:00
|
|
|
GList* meta_display_get_tab_list (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2009-02-02 17:01:27 +00:00
|
|
|
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace,
|
|
|
|
MetaWindow *window,
|
|
|
|
gboolean backward);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2009-02-02 17:01:27 +00:00
|
|
|
MetaWindow* meta_display_get_tab_current (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace);
|
2009-03-12 14:48:22 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2009-03-12 14:48:22 +00:00
|
|
|
gboolean meta_display_begin_grab_op (MetaDisplay *display,
|
|
|
|
MetaWindow *window,
|
|
|
|
MetaGrabOp op,
|
|
|
|
gboolean pointer_already_grabbed,
|
|
|
|
gboolean frame_action,
|
|
|
|
int button,
|
|
|
|
gulong modmask,
|
|
|
|
guint32 timestamp,
|
|
|
|
int root_x,
|
|
|
|
int root_y);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2009-03-12 14:48:22 +00:00
|
|
|
void meta_display_end_grab_op (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2009-08-28 15:25:51 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2009-08-28 15:25:51 +00:00
|
|
|
MetaGrabOp meta_display_get_grab_op (MetaDisplay *display);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2012-12-12 13:03:58 +00:00
|
|
|
guint meta_display_add_keybinding (MetaDisplay *display,
|
|
|
|
const char *name,
|
|
|
|
GSettings *settings,
|
|
|
|
MetaKeyBindingFlags flags,
|
|
|
|
MetaKeyHandlerFunc handler,
|
|
|
|
gpointer user_data,
|
|
|
|
GDestroyNotify free_data);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2011-11-04 18:18:57 +00:00
|
|
|
gboolean meta_display_remove_keybinding (MetaDisplay *display,
|
|
|
|
const char *name);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2018-07-18 18:33:16 +00:00
|
|
|
guint meta_display_grab_accelerator (MetaDisplay *display,
|
|
|
|
const char *accelerator,
|
|
|
|
MetaKeyBindingFlags flags);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2012-08-28 13:28:11 +00:00
|
|
|
gboolean meta_display_ungrab_accelerator (MetaDisplay *display,
|
|
|
|
guint action_id);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2012-12-12 13:03:58 +00:00
|
|
|
guint meta_display_get_keybinding_action (MetaDisplay *display,
|
|
|
|
unsigned int keycode,
|
|
|
|
unsigned long mask);
|
2009-08-28 15:25:51 +00:00
|
|
|
|
2021-01-29 19:56:46 +00:00
|
|
|
META_EXPORT
|
|
|
|
ClutterModifierType meta_display_get_compositor_modifiers (MetaDisplay *display);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2010-04-24 21:18:01 +00:00
|
|
|
GSList *meta_display_sort_windows_by_stacking (MetaDisplay *display,
|
|
|
|
GSList *windows);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2011-09-07 15:19:15 +00:00
|
|
|
void meta_display_add_ignored_crossing_serial (MetaDisplay *display,
|
|
|
|
unsigned long serial);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2012-04-14 13:12:48 +00:00
|
|
|
void meta_display_clear_mouse_mode (MetaDisplay *display);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2013-03-29 01:38:43 +00:00
|
|
|
void meta_display_freeze_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2013-03-29 01:38:43 +00:00
|
|
|
void meta_display_ungrab_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2013-03-29 01:38:43 +00:00
|
|
|
void meta_display_unfreeze_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2014-07-21 23:14:14 +00:00
|
|
|
gboolean meta_display_is_pointer_emulating_sequence (MetaDisplay *display,
|
|
|
|
ClutterEventSequence *sequence);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2016-06-22 17:17:40 +00:00
|
|
|
void meta_display_request_pad_osd (MetaDisplay *display,
|
|
|
|
ClutterInputDevice *pad,
|
|
|
|
gboolean edition_mode);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2016-06-22 17:10:13 +00:00
|
|
|
gchar * meta_display_get_pad_action_label (MetaDisplay *display,
|
|
|
|
ClutterInputDevice *pad,
|
|
|
|
MetaPadActionType action_type,
|
|
|
|
guint action_number);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 16:37:29 +00:00
|
|
|
void meta_display_get_size (MetaDisplay *display,
|
|
|
|
int *width,
|
|
|
|
int *height);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 16:37:29 +00:00
|
|
|
void meta_display_set_cursor (MetaDisplay *display,
|
|
|
|
MetaCursor cursor);
|
|
|
|
|
2017-08-26 19:22:34 +00:00
|
|
|
/**
|
|
|
|
* MetaDisplayDirection:
|
|
|
|
* @META_DISPLAY_UP: up
|
|
|
|
* @META_DISPLAY_DOWN: down
|
|
|
|
* @META_DISPLAY_LEFT: left
|
|
|
|
* @META_DISPLAY_RIGHT: right
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_DISPLAY_UP,
|
|
|
|
META_DISPLAY_DOWN,
|
|
|
|
META_DISPLAY_LEFT,
|
|
|
|
META_DISPLAY_RIGHT
|
|
|
|
} MetaDisplayDirection;
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
int meta_display_get_n_monitors (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
int meta_display_get_primary_monitor (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
int meta_display_get_current_monitor (MetaDisplay *display);
|
2019-01-23 02:25:35 +00:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
void meta_display_get_monitor_geometry (MetaDisplay *display,
|
|
|
|
int monitor,
|
|
|
|
MetaRectangle *geometry);
|
|
|
|
|
2017-08-01 18:38:41 +00:00
|
|
|
META_EXPORT
|
|
|
|
float meta_display_get_monitor_scale (MetaDisplay *display,
|
|
|
|
int monitor);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
gboolean meta_display_get_monitor_in_fullscreen (MetaDisplay *display,
|
|
|
|
int monitor);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
int meta_display_get_monitor_index_for_rect (MetaDisplay *display,
|
|
|
|
MetaRectangle *rect);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 19:22:34 +00:00
|
|
|
int meta_display_get_monitor_neighbor_index (MetaDisplay *display,
|
|
|
|
int which_monitor,
|
|
|
|
MetaDisplayDirection dir);
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-26 19:39:46 +00:00
|
|
|
void meta_display_focus_default_window (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* MetaDisplayCorner:
|
|
|
|
* @META_DISPLAY_TOPLEFT: top-left corner
|
|
|
|
* @META_DISPLAY_TOPRIGHT: top-right corner
|
|
|
|
* @META_DISPLAY_BOTTOMLEFT: bottom-left corner
|
|
|
|
* @META_DISPLAY_BOTTOMRIGHT: bottom-right corner
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_DISPLAY_TOPLEFT,
|
|
|
|
META_DISPLAY_TOPRIGHT,
|
|
|
|
META_DISPLAY_BOTTOMLEFT,
|
|
|
|
META_DISPLAY_BOTTOMRIGHT
|
|
|
|
} MetaDisplayCorner;
|
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2017-08-27 18:52:42 +00:00
|
|
|
MetaWorkspaceManager *meta_display_get_workspace_manager (MetaDisplay *display);
|
2018-11-27 16:11:15 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* meta_display_get_startup_notification: (skip)
|
|
|
|
*/
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2018-08-22 20:56:18 +00:00
|
|
|
MetaStartupNotification * meta_display_get_startup_notification (MetaDisplay *display);
|
2017-08-27 18:52:42 +00:00
|
|
|
|
2019-01-23 02:25:35 +00:00
|
|
|
META_EXPORT
|
2018-12-09 11:44:20 +00:00
|
|
|
MetaSoundPlayer * meta_display_get_sound_player (MetaDisplay *display);
|
|
|
|
|
2018-11-23 10:48:53 +00:00
|
|
|
META_EXPORT
|
|
|
|
MetaSelection * meta_display_get_selection (MetaDisplay *display);
|
|
|
|
|
2018-12-30 20:23:07 +00:00
|
|
|
META_EXPORT
|
|
|
|
void meta_display_set_input_focus (MetaDisplay *display,
|
|
|
|
MetaWindow *window,
|
|
|
|
gboolean focus_frame,
|
|
|
|
guint32 timestamp);
|
|
|
|
META_EXPORT
|
|
|
|
void meta_display_unset_input_focus (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
|
|
|
|
2008-05-19 00:00:09 +00:00
|
|
|
#endif
|