2008-05-18 20:00:09 -04: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-11 20:42:06 -05:00
|
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
2008-05-18 20:00:09 -04:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef META_DISPLAY_H
|
|
|
|
#define META_DISPLAY_H
|
|
|
|
|
2008-12-02 17:58:07 -05:00
|
|
|
#include <glib-object.h>
|
2008-05-18 20:00:09 -04:00
|
|
|
#include <X11/Xlib.h>
|
|
|
|
|
2011-03-05 19:29:12 -05:00
|
|
|
#include <meta/types.h>
|
|
|
|
#include <meta/prefs.h>
|
|
|
|
#include <meta/common.h>
|
2017-08-26 15:22:34 -04:00
|
|
|
#include <meta/workspace.h>
|
2018-12-09 06:44:20 -05:00
|
|
|
#include <meta/meta-sound-player.h>
|
2018-08-22 16:56:18 -04:00
|
|
|
#include <meta/meta-startup-notification.h>
|
2008-05-18 20:00:09 -04:00
|
|
|
|
2013-02-15 13:42:08 -05: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 12:01:27 -05:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_TAB_LIST_NORMAL,
|
|
|
|
META_TAB_LIST_DOCKS,
|
2012-03-12 18:00:12 -04:00
|
|
|
META_TAB_LIST_GROUP,
|
|
|
|
META_TAB_LIST_NORMAL_ALL
|
2009-02-02 12:01:27 -05:00
|
|
|
} MetaTabList;
|
|
|
|
|
2013-02-15 13:42:08 -05:00
|
|
|
/**
|
|
|
|
* MetaTabShowType:
|
|
|
|
* @META_TAB_SHOW_ICON: Show icon (Alt-Tab mode)
|
|
|
|
* @META_TAB_SHOW_INSTANTLY: Show instantly (Alt-Esc mode)
|
|
|
|
*/
|
2009-02-02 12:01:27 -05:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_TAB_SHOW_ICON, /* Alt-Tab mode */
|
|
|
|
META_TAB_SHOW_INSTANTLY /* Alt-Esc mode */
|
|
|
|
} MetaTabShowType;
|
|
|
|
|
2016-06-22 13:01:31 -04: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 17:58:07 -05: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-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2008-12-02 17:58:07 -05:00
|
|
|
GType meta_display_get_type (void) G_GNUC_CONST;
|
|
|
|
|
2008-05-18 20:00:09 -04:00
|
|
|
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2012-07-30 14:57:53 -04:00
|
|
|
gboolean meta_display_supports_extended_barriers (MetaDisplay *display);
|
2017-08-26 12:24:46 -04:00
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-12-26 01:49:27 -05:00
|
|
|
void meta_display_close (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
|
|
|
|
2021-03-03 10:05:09 -05:00
|
|
|
META_EXPORT
|
|
|
|
MetaContext * meta_display_get_context (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 12:24:46 -04:00
|
|
|
MetaCompositor *meta_display_get_compositor (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 12:24:46 -04:00
|
|
|
MetaX11Display *meta_display_get_x11_display (MetaDisplay *display);
|
2008-05-18 20:00:09 -04:00
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2008-05-18 20:00:09 -04:00
|
|
|
MetaWindow *meta_display_get_focus_window (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2010-04-17 14:43:08 -04:00
|
|
|
gboolean meta_display_xserver_time_is_before (MetaDisplay *display,
|
|
|
|
guint32 time1,
|
|
|
|
guint32 time2);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2010-04-17 14:43:08 -04:00
|
|
|
guint32 meta_display_get_last_user_time (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2008-11-25 10:24:48 -05:00
|
|
|
guint32 meta_display_get_current_time (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2008-11-25 10:24:48 -05:00
|
|
|
guint32 meta_display_get_current_time_roundtrip (MetaDisplay *display);
|
2008-05-18 20:00:09 -04:00
|
|
|
|
2021-12-15 13:02:24 -05:00
|
|
|
META_EXPORT
|
|
|
|
GList * meta_display_list_all_windows (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2009-02-02 12:01:27 -05:00
|
|
|
GList* meta_display_get_tab_list (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2009-02-02 12:01:27 -05:00
|
|
|
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace,
|
|
|
|
MetaWindow *window,
|
|
|
|
gboolean backward);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2009-02-02 12:01:27 -05:00
|
|
|
MetaWindow* meta_display_get_tab_current (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaWorkspace *workspace);
|
2009-03-12 10:48:22 -04:00
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2009-03-12 10:48:22 -04: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-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2009-03-12 10:48:22 -04:00
|
|
|
void meta_display_end_grab_op (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2009-08-28 11:25:51 -04:00
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2009-08-28 11:25:51 -04:00
|
|
|
MetaGrabOp meta_display_get_grab_op (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2012-12-12 08:03:58 -05: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-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2011-11-04 14:18:57 -04:00
|
|
|
gboolean meta_display_remove_keybinding (MetaDisplay *display,
|
|
|
|
const char *name);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2018-07-18 14:33:16 -04:00
|
|
|
guint meta_display_grab_accelerator (MetaDisplay *display,
|
|
|
|
const char *accelerator,
|
|
|
|
MetaKeyBindingFlags flags);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2012-08-28 09:28:11 -04:00
|
|
|
gboolean meta_display_ungrab_accelerator (MetaDisplay *display,
|
|
|
|
guint action_id);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2012-12-12 08:03:58 -05:00
|
|
|
guint meta_display_get_keybinding_action (MetaDisplay *display,
|
|
|
|
unsigned int keycode,
|
|
|
|
unsigned long mask);
|
2009-08-28 11:25:51 -04:00
|
|
|
|
2021-01-29 14:56:46 -05:00
|
|
|
META_EXPORT
|
|
|
|
ClutterModifierType meta_display_get_compositor_modifiers (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2010-04-24 17:18:01 -04:00
|
|
|
GSList *meta_display_sort_windows_by_stacking (MetaDisplay *display,
|
|
|
|
GSList *windows);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2011-09-07 11:19:15 -04:00
|
|
|
void meta_display_add_ignored_crossing_serial (MetaDisplay *display,
|
|
|
|
unsigned long serial);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2012-04-14 09:12:48 -04:00
|
|
|
void meta_display_clear_mouse_mode (MetaDisplay *display);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2013-03-28 21:38:43 -04:00
|
|
|
void meta_display_freeze_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2013-03-28 21:38:43 -04:00
|
|
|
void meta_display_ungrab_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2013-03-28 21:38:43 -04:00
|
|
|
void meta_display_unfreeze_keyboard (MetaDisplay *display,
|
|
|
|
guint32 timestamp);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2014-07-21 19:14:14 -04:00
|
|
|
gboolean meta_display_is_pointer_emulating_sequence (MetaDisplay *display,
|
|
|
|
ClutterEventSequence *sequence);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2016-06-22 13:17:40 -04:00
|
|
|
void meta_display_request_pad_osd (MetaDisplay *display,
|
|
|
|
ClutterInputDevice *pad,
|
|
|
|
gboolean edition_mode);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2016-06-22 13:10:13 -04:00
|
|
|
gchar * meta_display_get_pad_action_label (MetaDisplay *display,
|
|
|
|
ClutterInputDevice *pad,
|
|
|
|
MetaPadActionType action_type,
|
|
|
|
guint action_number);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 12:37:29 -04:00
|
|
|
void meta_display_get_size (MetaDisplay *display,
|
|
|
|
int *width,
|
|
|
|
int *height);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 12:37:29 -04:00
|
|
|
void meta_display_set_cursor (MetaDisplay *display,
|
|
|
|
MetaCursor cursor);
|
|
|
|
|
2017-08-26 15:22:34 -04: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-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
int meta_display_get_n_monitors (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
int meta_display_get_primary_monitor (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
int meta_display_get_current_monitor (MetaDisplay *display);
|
2019-01-22 21:25:35 -05:00
|
|
|
|
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
void meta_display_get_monitor_geometry (MetaDisplay *display,
|
|
|
|
int monitor,
|
|
|
|
MetaRectangle *geometry);
|
|
|
|
|
2017-08-01 14:38:41 -04:00
|
|
|
META_EXPORT
|
|
|
|
float meta_display_get_monitor_scale (MetaDisplay *display,
|
|
|
|
int monitor);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
gboolean meta_display_get_monitor_in_fullscreen (MetaDisplay *display,
|
|
|
|
int monitor);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
int meta_display_get_monitor_index_for_rect (MetaDisplay *display,
|
|
|
|
MetaRectangle *rect);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 15:22:34 -04:00
|
|
|
int meta_display_get_monitor_neighbor_index (MetaDisplay *display,
|
|
|
|
int which_monitor,
|
|
|
|
MetaDisplayDirection dir);
|
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-26 15:39:46 -04: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-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2017-08-27 14:52:42 -04:00
|
|
|
MetaWorkspaceManager *meta_display_get_workspace_manager (MetaDisplay *display);
|
2018-11-27 11:11:15 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* meta_display_get_startup_notification: (skip)
|
|
|
|
*/
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2018-08-22 16:56:18 -04:00
|
|
|
MetaStartupNotification * meta_display_get_startup_notification (MetaDisplay *display);
|
2017-08-27 14:52:42 -04:00
|
|
|
|
2019-01-22 21:25:35 -05:00
|
|
|
META_EXPORT
|
2018-12-09 06:44:20 -05:00
|
|
|
MetaSoundPlayer * meta_display_get_sound_player (MetaDisplay *display);
|
|
|
|
|
2018-11-23 05:48:53 -05:00
|
|
|
META_EXPORT
|
|
|
|
MetaSelection * meta_display_get_selection (MetaDisplay *display);
|
|
|
|
|
2018-12-30 15:23:07 -05: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-18 20:00:09 -04:00
|
|
|
#endif
|