2001-05-30 11:36:31 -04:00
|
|
|
/* Metacity X display handler */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (C) 2001 Havoc Pennington
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef META_DISPLAY_H
|
|
|
|
#define META_DISPLAY_H
|
|
|
|
|
|
|
|
#include <glib.h>
|
2001-06-02 00:14:18 -04:00
|
|
|
#include <X11/Xlib.h>
|
2001-05-30 11:36:31 -04:00
|
|
|
#include "eventqueue.h"
|
2001-07-11 02:22:00 -04:00
|
|
|
#include "common.h"
|
2001-05-30 11:36:31 -04:00
|
|
|
|
2002-01-03 22:25:53 -05:00
|
|
|
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
|
|
|
|
|
2001-06-18 02:11:53 -04:00
|
|
|
/* this doesn't really belong here, oh well. */
|
|
|
|
typedef struct _MetaRectangle MetaRectangle;
|
|
|
|
|
|
|
|
struct _MetaRectangle
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int width;
|
|
|
|
int height;
|
|
|
|
};
|
|
|
|
|
2002-04-28 00:52:26 -04:00
|
|
|
typedef struct _MetaDisplay MetaDisplay;
|
|
|
|
typedef struct _MetaFrame MetaFrame;
|
|
|
|
typedef struct _MetaKeyBinding MetaKeyBinding;
|
|
|
|
typedef struct _MetaScreen MetaScreen;
|
|
|
|
typedef struct _MetaStack MetaStack;
|
|
|
|
typedef struct _MetaUISlave MetaUISlave;
|
|
|
|
typedef struct _MetaWindow MetaWindow;
|
|
|
|
typedef struct _MetaWorkspace MetaWorkspace;
|
2001-05-30 11:36:31 -04:00
|
|
|
|
Screw around with Anders's ping patch so he'll get plenty of CVS
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-26 21:05:39 -05:00
|
|
|
typedef void (* MetaWindowPingFunc) (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
gpointer user_data);
|
|
|
|
|
|
|
|
|
2001-06-09 02:08:44 -04:00
|
|
|
#define _NET_WM_STATE_REMOVE 0 /* remove/unset property */
|
|
|
|
#define _NET_WM_STATE_ADD 1 /* add/set property */
|
|
|
|
#define _NET_WM_STATE_TOGGLE 2 /* toggle property */
|
|
|
|
|
2002-03-02 10:26:07 -05:00
|
|
|
/* This is basically a bogus number, just has to be large enough
|
|
|
|
* to handle the expected case of the alt+tab operation, where
|
|
|
|
* we want to ignore serials from UnmapNotify on the tab popup,
|
|
|
|
* and the LeaveNotify/EnterNotify from the pointer ungrab
|
|
|
|
*/
|
|
|
|
#define N_IGNORED_SERIALS 4
|
|
|
|
|
2001-05-30 11:36:31 -04:00
|
|
|
struct _MetaDisplay
|
|
|
|
{
|
|
|
|
char *name;
|
|
|
|
Display *xdisplay;
|
2001-05-31 23:00:01 -04:00
|
|
|
|
2001-06-09 17:58:30 -04:00
|
|
|
Window leader_window;
|
|
|
|
|
2001-06-02 00:14:18 -04:00
|
|
|
Atom atom_net_wm_name;
|
2001-06-02 21:33:27 -04:00
|
|
|
Atom atom_wm_protocols;
|
|
|
|
Atom atom_wm_take_focus;
|
|
|
|
Atom atom_wm_delete_window;
|
2001-06-06 00:47:37 -04:00
|
|
|
Atom atom_wm_state;
|
2001-06-07 01:18:10 -04:00
|
|
|
Atom atom_net_close_window;
|
2001-06-08 02:39:38 -04:00
|
|
|
Atom atom_net_wm_state;
|
|
|
|
Atom atom_motif_wm_hints;
|
|
|
|
Atom atom_net_wm_state_shaded;
|
|
|
|
Atom atom_net_wm_state_maximized_horz;
|
|
|
|
Atom atom_net_wm_state_maximized_vert;
|
2001-06-09 01:14:43 -04:00
|
|
|
Atom atom_net_wm_desktop;
|
|
|
|
Atom atom_net_number_of_desktops;
|
2001-06-09 17:58:30 -04:00
|
|
|
Atom atom_wm_change_state;
|
|
|
|
Atom atom_sm_client_id;
|
|
|
|
Atom atom_wm_client_leader;
|
|
|
|
Atom atom_wm_window_role;
|
2001-06-09 23:17:15 -04:00
|
|
|
Atom atom_net_current_desktop;
|
|
|
|
Atom atom_net_supporting_wm_check;
|
2001-08-29 00:16:30 -04:00
|
|
|
Atom atom_net_supported;
|
2001-06-09 23:17:15 -04:00
|
|
|
Atom atom_net_wm_window_type;
|
|
|
|
Atom atom_net_wm_window_type_desktop;
|
|
|
|
Atom atom_net_wm_window_type_dock;
|
|
|
|
Atom atom_net_wm_window_type_toolbar;
|
|
|
|
Atom atom_net_wm_window_type_menu;
|
|
|
|
Atom atom_net_wm_window_type_dialog;
|
|
|
|
Atom atom_net_wm_window_type_normal;
|
|
|
|
Atom atom_net_wm_state_modal;
|
2001-06-10 03:52:35 -04:00
|
|
|
Atom atom_net_client_list;
|
|
|
|
Atom atom_net_client_list_stacking;
|
2001-06-11 01:47:51 -04:00
|
|
|
Atom atom_net_wm_state_skip_taskbar;
|
|
|
|
Atom atom_net_wm_state_skip_pager;
|
2001-06-12 20:56:08 -04:00
|
|
|
Atom atom_win_workspace;
|
2001-06-21 02:08:35 -04:00
|
|
|
Atom atom_win_layer;
|
2001-06-23 01:49:35 -04:00
|
|
|
Atom atom_win_protocols;
|
|
|
|
Atom atom_win_supporting_wm_check;
|
2001-06-23 23:18:10 -04:00
|
|
|
Atom atom_net_wm_icon_name;
|
|
|
|
Atom atom_net_wm_icon;
|
2001-08-05 12:04:52 -04:00
|
|
|
Atom atom_net_wm_icon_geometry;
|
2001-08-07 01:52:51 -04:00
|
|
|
Atom atom_utf8_string;
|
2001-08-19 21:42:44 -04:00
|
|
|
Atom atom_wm_icon_size;
|
2001-08-22 02:01:01 -04:00
|
|
|
Atom atom_kwm_win_icon;
|
2001-08-29 00:16:30 -04:00
|
|
|
Atom atom_net_wm_moveresize;
|
2001-10-07 19:06:19 -04:00
|
|
|
Atom atom_net_active_window;
|
2001-10-15 00:14:58 -04:00
|
|
|
Atom atom_metacity_restart_message;
|
2002-01-10 01:31:31 -05:00
|
|
|
Atom atom_net_wm_strut;
|
|
|
|
Atom atom_win_hints;
|
2002-02-06 22:07:56 -05:00
|
|
|
Atom atom_metacity_reload_theme_message;
|
2002-02-08 01:01:58 -05:00
|
|
|
Atom atom_metacity_set_keybindings_message;
|
2002-02-08 23:50:58 -05:00
|
|
|
Atom atom_net_wm_state_hidden;
|
2002-02-09 01:54:44 -05:00
|
|
|
Atom atom_net_wm_window_type_utility;
|
|
|
|
Atom atom_net_wm_window_type_splashscreen;
|
Screw around with Anders's ping patch so he'll get plenty of CVS
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-26 21:05:39 -05:00
|
|
|
Atom atom_net_wm_ping;
|
|
|
|
Atom atom_net_wm_pid;
|
|
|
|
Atom atom_wm_client_machine;
|
2002-02-23 17:58:02 -05:00
|
|
|
Atom atom_net_wm_state_fullscreen;
|
2002-06-24 21:12:37 -04:00
|
|
|
Atom atom_net_workarea;
|
2002-09-23 22:04:32 -04:00
|
|
|
Atom atom_net_showing_desktop;
|
2002-05-16 00:03:36 -04:00
|
|
|
Atom atom_net_desktop_layout;
|
2002-06-08 19:55:27 -04:00
|
|
|
Atom atom_manager;
|
|
|
|
Atom atom_targets;
|
|
|
|
Atom atom_multiple;
|
|
|
|
Atom atom_timestamp;
|
|
|
|
Atom atom_version;
|
|
|
|
Atom atom_atom_pair;
|
2002-06-22 00:52:35 -04:00
|
|
|
Atom atom_net_desktop_names;
|
2002-08-01 19:52:47 -04:00
|
|
|
Atom atom_net_wm_allowed_actions;
|
|
|
|
Atom atom_net_wm_action_move;
|
|
|
|
Atom atom_net_wm_action_resize;
|
|
|
|
Atom atom_net_wm_action_shade;
|
|
|
|
Atom atom_net_wm_action_stick;
|
|
|
|
Atom atom_net_wm_action_maximize_horz;
|
|
|
|
Atom atom_net_wm_action_maximize_vert;
|
|
|
|
Atom atom_net_wm_action_change_desktop;
|
|
|
|
Atom atom_net_wm_action_close;
|
2002-10-01 20:47:29 -04:00
|
|
|
Atom atom_net_wm_state_above;
|
|
|
|
Atom atom_net_wm_state_below;
|
2001-06-06 00:47:37 -04:00
|
|
|
|
2001-06-04 00:58:22 -04:00
|
|
|
/* This is the actual window from focus events,
|
|
|
|
* not the one we last set
|
|
|
|
*/
|
|
|
|
MetaWindow *focus_window;
|
2001-06-06 00:47:37 -04:00
|
|
|
|
2002-08-08 23:32:09 -04:00
|
|
|
/* window we are expecting a FocusIn event for
|
2002-08-08 00:45:13 -04:00
|
|
|
*/
|
|
|
|
MetaWindow *expected_focus_window;
|
|
|
|
|
2002-03-11 23:34:17 -05:00
|
|
|
/* Most recently focused list. Always contains all
|
|
|
|
* live windows.
|
|
|
|
*/
|
|
|
|
GList *mru_list;
|
2001-06-23 23:41:44 -04:00
|
|
|
|
2001-06-06 00:47:37 -04:00
|
|
|
GList *workspaces;
|
2001-10-14 23:39:41 -04:00
|
|
|
|
|
|
|
guint showing_desktop : 1;
|
2002-01-19 18:59:11 -05:00
|
|
|
guint static_gravity_works : 1;
|
2001-06-02 00:14:18 -04:00
|
|
|
|
2001-05-31 23:00:01 -04:00
|
|
|
/*< private-ish >*/
|
2001-05-30 11:36:31 -04:00
|
|
|
MetaEventQueue *events;
|
|
|
|
GSList *screens;
|
|
|
|
GHashTable *window_ids;
|
2002-02-24 14:58:27 -05:00
|
|
|
int error_traps;
|
|
|
|
int (* error_trap_handler) (Display *display,
|
|
|
|
XErrorEvent *error);
|
2001-05-31 02:42:58 -04:00
|
|
|
int server_grab_count;
|
2001-06-07 22:17:48 -04:00
|
|
|
|
2002-01-05 22:15:49 -05:00
|
|
|
/* This window holds the focus when we don't want to focus
|
|
|
|
* any actual clients
|
|
|
|
*/
|
|
|
|
Window no_focus_window;
|
|
|
|
|
2001-06-07 22:17:48 -04:00
|
|
|
/* for double click */
|
|
|
|
int double_click_time;
|
|
|
|
Time last_button_time;
|
|
|
|
Window last_button_xwindow;
|
|
|
|
int last_button_num;
|
|
|
|
guint is_double_click : 1;
|
2001-08-30 00:01:38 -04:00
|
|
|
|
2002-03-02 10:26:07 -05:00
|
|
|
/* serials of leave/unmap events that may
|
|
|
|
* correspond to an enter event we should
|
|
|
|
* ignore
|
|
|
|
*/
|
|
|
|
unsigned long ignored_serials[N_IGNORED_SERIALS];
|
|
|
|
Window ungrab_should_not_cause_focus_window;
|
|
|
|
|
2002-01-03 18:28:19 -05:00
|
|
|
guint32 current_time;
|
Screw around with Anders's ping patch so he'll get plenty of CVS
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-26 21:05:39 -05:00
|
|
|
|
|
|
|
/* Pings which we're waiting for a reply from */
|
|
|
|
GSList *pending_pings;
|
2002-05-23 22:23:46 -04:00
|
|
|
|
|
|
|
/* Pending autoraise */
|
|
|
|
guint autoraise_timeout_id;
|
2002-10-07 19:14:40 -04:00
|
|
|
|
|
|
|
/* Alt+click button grabs */
|
|
|
|
unsigned int window_grab_modifiers;
|
2001-07-25 23:14:45 -04:00
|
|
|
|
2001-07-11 02:22:00 -04:00
|
|
|
/* current window operation */
|
|
|
|
MetaGrabOp grab_op;
|
2002-06-27 01:08:32 -04:00
|
|
|
MetaScreen *grab_screen;
|
2001-07-11 02:22:00 -04:00
|
|
|
MetaWindow *grab_window;
|
2002-03-02 10:26:07 -05:00
|
|
|
Window grab_xwindow;
|
2001-07-11 02:22:00 -04:00
|
|
|
int grab_button;
|
Patch to provide extra cues to the user when using window menu move and
2002-08-08 Craig Black <blackc@speakeasy.net>
Patch to provide extra cues to the user when using
window menu move and resize, #85724.
* src/common.h: add new cursors
* src/display.c: (grab_op_is_mouse)
(meta_display_create_x_cursor), (xcursor_for_op),
(meta_display_set_grab_op_cursor),
(meta_display_begin_grab_op):
The keyboard move and resize grab ops now also use the mouse.
Allow the grab cursor to be changed during the grab op.
Hold onto the initial grab position in case of reset.
* src/display.h: save the initial grab position
* src/keybindings.c: (process_keyboard_move_grab),
(process_keyboard_resize_grab), (handle_begin_move),
(handle_begin_resize):
The keyboard move and resize grab ops now also use the mouse.
* src/window.c: (meta_window_client_message), (menu_callback),
(update_move), (update_resize),
(meta_window_handle_mouse_grab_op_event), (warp_pointer),
(meta_window_warp_pointer), (meta_window_begin_grab_op),
(meta_window_update_resize_grab_op):
When moving or resizing a window use the last grab position
in computing change increment.
Provide support for warping the mouse pointer.
* src/window.h: new warp pointer and grab op helper functions
2002-08-09 00:27:23 -04:00
|
|
|
int grab_initial_root_x;
|
|
|
|
int grab_initial_root_y;
|
|
|
|
int grab_current_root_x;
|
|
|
|
int grab_current_root_y;
|
2001-07-11 02:22:00 -04:00
|
|
|
gulong grab_mask;
|
|
|
|
guint grab_have_pointer : 1;
|
|
|
|
guint grab_have_keyboard : 1;
|
2001-07-12 01:53:56 -04:00
|
|
|
MetaRectangle grab_initial_window_pos;
|
Patch to provide extra cues to the user when using window menu move and
2002-08-08 Craig Black <blackc@speakeasy.net>
Patch to provide extra cues to the user when using
window menu move and resize, #85724.
* src/common.h: add new cursors
* src/display.c: (grab_op_is_mouse)
(meta_display_create_x_cursor), (xcursor_for_op),
(meta_display_set_grab_op_cursor),
(meta_display_begin_grab_op):
The keyboard move and resize grab ops now also use the mouse.
Allow the grab cursor to be changed during the grab op.
Hold onto the initial grab position in case of reset.
* src/display.h: save the initial grab position
* src/keybindings.c: (process_keyboard_move_grab),
(process_keyboard_resize_grab), (handle_begin_move),
(handle_begin_resize):
The keyboard move and resize grab ops now also use the mouse.
* src/window.c: (meta_window_client_message), (menu_callback),
(update_move), (update_resize),
(meta_window_handle_mouse_grab_op_event), (warp_pointer),
(meta_window_warp_pointer), (meta_window_begin_grab_op),
(meta_window_update_resize_grab_op):
When moving or resizing a window use the last grab position
in computing change increment.
Provide support for warping the mouse pointer.
* src/window.h: new warp pointer and grab op helper functions
2002-08-09 00:27:23 -04:00
|
|
|
MetaRectangle grab_current_window_pos;
|
2002-03-17 12:22:23 -05:00
|
|
|
MetaResizePopup *grab_resize_popup;
|
2002-08-10 01:27:17 -04:00
|
|
|
GTimeVal grab_last_moveresize_time;
|
|
|
|
|
2002-04-28 00:52:26 -04:00
|
|
|
|
|
|
|
/* Keybindings stuff */
|
|
|
|
MetaKeyBinding *screen_bindings;
|
|
|
|
int n_screen_bindings;
|
|
|
|
MetaKeyBinding *window_bindings;
|
|
|
|
int n_window_bindings;
|
|
|
|
int min_keycode;
|
|
|
|
int max_keycode;
|
|
|
|
KeySym *keymap;
|
|
|
|
int keysyms_per_keycode;
|
|
|
|
XModifierKeymap *modmap;
|
|
|
|
unsigned int ignored_modifier_mask;
|
|
|
|
unsigned int num_lock_mask;
|
|
|
|
unsigned int scroll_lock_mask;
|
2002-07-13 23:16:41 -04:00
|
|
|
unsigned int hyper_mask;
|
|
|
|
unsigned int super_mask;
|
|
|
|
unsigned int meta_mask;
|
|
|
|
|
2002-06-06 23:18:46 -04:00
|
|
|
/* Xinerama cache */
|
|
|
|
unsigned int xinerama_cache_invalidated : 1;
|
2002-06-22 01:11:04 -04:00
|
|
|
|
|
|
|
/* Closing down the display */
|
|
|
|
int closing;
|
2002-08-12 17:32:13 -04:00
|
|
|
|
|
|
|
/* Managed by group.c */
|
|
|
|
GHashTable *groups_by_leader;
|
2001-05-30 11:36:31 -04:00
|
|
|
};
|
|
|
|
|
2001-05-31 23:00:01 -04:00
|
|
|
gboolean meta_display_open (const char *name);
|
|
|
|
void meta_display_close (MetaDisplay *display);
|
|
|
|
MetaScreen* meta_display_screen_for_root (MetaDisplay *display,
|
|
|
|
Window xroot);
|
|
|
|
MetaScreen* meta_display_screen_for_x_screen (MetaDisplay *display,
|
|
|
|
Screen *screen);
|
2002-06-27 01:08:32 -04:00
|
|
|
MetaScreen* meta_display_screen_for_xwindow (MetaDisplay *display,
|
|
|
|
Window xindow);
|
2001-05-31 23:00:01 -04:00
|
|
|
void meta_display_grab (MetaDisplay *display);
|
|
|
|
void meta_display_ungrab (MetaDisplay *display);
|
2001-06-07 22:17:48 -04:00
|
|
|
gboolean meta_display_is_double_click (MetaDisplay *display);
|
2001-05-31 23:00:01 -04:00
|
|
|
|
2002-06-08 19:55:27 -04:00
|
|
|
void meta_display_unmanage_screen (MetaDisplay *display,
|
|
|
|
MetaScreen *screen);
|
|
|
|
|
|
|
|
void meta_display_unmanage_windows_for_screen (MetaDisplay *display,
|
|
|
|
MetaScreen *screen);
|
|
|
|
|
2001-05-31 02:42:58 -04:00
|
|
|
/* A given MetaWindow may have various X windows that "belong"
|
|
|
|
* to it, such as the frame window.
|
|
|
|
*/
|
|
|
|
MetaWindow* meta_display_lookup_x_window (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
|
|
|
void meta_display_register_x_window (MetaDisplay *display,
|
|
|
|
Window *xwindowp,
|
|
|
|
MetaWindow *window);
|
|
|
|
void meta_display_unregister_x_window (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
|
|
|
|
2001-06-24 04:09:10 -04:00
|
|
|
GSList* meta_display_list_windows (MetaDisplay *display);
|
2001-05-30 11:36:31 -04:00
|
|
|
|
2001-05-30 23:30:58 -04:00
|
|
|
MetaDisplay* meta_display_for_x_display (Display *xdisplay);
|
2001-05-31 02:42:58 -04:00
|
|
|
GSList* meta_displays_list (void);
|
2001-05-30 11:36:31 -04:00
|
|
|
|
2001-06-06 00:47:37 -04:00
|
|
|
MetaWorkspace* meta_display_get_workspace_by_index (MetaDisplay *display,
|
|
|
|
int index);
|
|
|
|
MetaWorkspace* meta_display_get_workspace_by_screen_index (MetaDisplay *display,
|
|
|
|
MetaScreen *screen,
|
|
|
|
int index);
|
2001-07-25 23:14:45 -04:00
|
|
|
|
|
|
|
Cursor meta_display_create_x_cursor (MetaDisplay *display,
|
|
|
|
MetaCursor cursor);
|
|
|
|
|
Patch to provide extra cues to the user when using window menu move and
2002-08-08 Craig Black <blackc@speakeasy.net>
Patch to provide extra cues to the user when using
window menu move and resize, #85724.
* src/common.h: add new cursors
* src/display.c: (grab_op_is_mouse)
(meta_display_create_x_cursor), (xcursor_for_op),
(meta_display_set_grab_op_cursor),
(meta_display_begin_grab_op):
The keyboard move and resize grab ops now also use the mouse.
Allow the grab cursor to be changed during the grab op.
Hold onto the initial grab position in case of reset.
* src/display.h: save the initial grab position
* src/keybindings.c: (process_keyboard_move_grab),
(process_keyboard_resize_grab), (handle_begin_move),
(handle_begin_resize):
The keyboard move and resize grab ops now also use the mouse.
* src/window.c: (meta_window_client_message), (menu_callback),
(update_move), (update_resize),
(meta_window_handle_mouse_grab_op_event), (warp_pointer),
(meta_window_warp_pointer), (meta_window_begin_grab_op),
(meta_window_update_resize_grab_op):
When moving or resizing a window use the last grab position
in computing change increment.
Provide support for warping the mouse pointer.
* src/window.h: new warp pointer and grab op helper functions
2002-08-09 00:27:23 -04:00
|
|
|
void meta_display_set_grab_op_cursor (MetaDisplay *display,
|
2002-08-14 12:51:13 -04:00
|
|
|
MetaScreen *screen,
|
Patch to provide extra cues to the user when using window menu move and
2002-08-08 Craig Black <blackc@speakeasy.net>
Patch to provide extra cues to the user when using
window menu move and resize, #85724.
* src/common.h: add new cursors
* src/display.c: (grab_op_is_mouse)
(meta_display_create_x_cursor), (xcursor_for_op),
(meta_display_set_grab_op_cursor),
(meta_display_begin_grab_op):
The keyboard move and resize grab ops now also use the mouse.
Allow the grab cursor to be changed during the grab op.
Hold onto the initial grab position in case of reset.
* src/display.h: save the initial grab position
* src/keybindings.c: (process_keyboard_move_grab),
(process_keyboard_resize_grab), (handle_begin_move),
(handle_begin_resize):
The keyboard move and resize grab ops now also use the mouse.
* src/window.c: (meta_window_client_message), (menu_callback),
(update_move), (update_resize),
(meta_window_handle_mouse_grab_op_event), (warp_pointer),
(meta_window_warp_pointer), (meta_window_begin_grab_op),
(meta_window_update_resize_grab_op):
When moving or resizing a window use the last grab position
in computing change increment.
Provide support for warping the mouse pointer.
* src/window.h: new warp pointer and grab op helper functions
2002-08-09 00:27:23 -04:00
|
|
|
MetaGrabOp op,
|
|
|
|
gboolean change_pointer,
|
|
|
|
Window grab_xwindow,
|
|
|
|
Time timestamp);
|
|
|
|
|
2001-07-11 02:22:00 -04:00
|
|
|
gboolean meta_display_begin_grab_op (MetaDisplay *display,
|
2002-06-27 01:08:32 -04:00
|
|
|
MetaScreen *screen,
|
2001-07-11 02:22:00 -04:00
|
|
|
MetaWindow *window,
|
|
|
|
MetaGrabOp op,
|
|
|
|
gboolean pointer_already_grabbed,
|
|
|
|
int button,
|
|
|
|
gulong modmask,
|
|
|
|
Time timestamp,
|
|
|
|
int root_x,
|
|
|
|
int root_y);
|
|
|
|
void meta_display_end_grab_op (MetaDisplay *display,
|
|
|
|
Time timestamp);
|
|
|
|
|
2001-07-25 23:14:45 -04:00
|
|
|
void meta_display_grab_window_buttons (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
|
|
|
void meta_display_ungrab_window_buttons (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
2001-07-11 02:22:00 -04:00
|
|
|
|
2001-12-10 23:03:58 -05:00
|
|
|
void meta_display_grab_focus_window_button (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
|
|
|
void meta_display_ungrab_focus_window_button (MetaDisplay *display,
|
|
|
|
Window xwindow);
|
2001-12-10 02:48:21 -05:00
|
|
|
|
2001-08-30 00:01:38 -04:00
|
|
|
/* make a request to ensure the event serial has changed */
|
|
|
|
void meta_display_increment_event_serial (MetaDisplay *display);
|
2001-06-06 00:47:37 -04:00
|
|
|
|
2001-10-07 19:06:19 -04:00
|
|
|
void meta_display_update_active_window_hint (MetaDisplay *display);
|
|
|
|
|
2001-10-14 23:39:41 -04:00
|
|
|
/* Show/hide the desktop (temporarily hide all windows) */
|
|
|
|
void meta_display_show_desktop (MetaDisplay *display);
|
|
|
|
void meta_display_unshow_desktop (MetaDisplay *display);
|
|
|
|
|
2002-01-03 18:28:19 -05:00
|
|
|
guint32 meta_display_get_current_time (MetaDisplay *display);
|
|
|
|
|
2002-01-05 22:15:49 -05:00
|
|
|
/* utility goo */
|
2002-03-02 10:26:07 -05:00
|
|
|
const char* meta_event_mode_to_string (int m);
|
|
|
|
const char* meta_event_detail_to_string (int d);
|
2002-01-05 22:15:49 -05:00
|
|
|
|
2002-02-06 22:25:34 -05:00
|
|
|
void meta_display_queue_retheme_all_windows (MetaDisplay *display);
|
|
|
|
void meta_display_retheme_all (void);
|
|
|
|
|
Screw around with Anders's ping patch so he'll get plenty of CVS
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-26 21:05:39 -05:00
|
|
|
void meta_display_ping_window (MetaDisplay *display,
|
|
|
|
MetaWindow *window,
|
|
|
|
Time timestamp,
|
|
|
|
MetaWindowPingFunc ping_reply_func,
|
|
|
|
MetaWindowPingFunc ping_timeout_func,
|
|
|
|
void *user_data);
|
|
|
|
gboolean meta_display_window_has_pending_pings (MetaDisplay *display,
|
|
|
|
MetaWindow *window);
|
|
|
|
|
2002-04-05 10:52:49 -05:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_TAB_LIST_NORMAL,
|
|
|
|
META_TAB_LIST_DOCKS
|
|
|
|
|
|
|
|
|
|
|
|
} MetaTabList;
|
|
|
|
|
2002-03-11 23:34:17 -05:00
|
|
|
GSList* meta_display_get_tab_list (MetaDisplay *display,
|
2002-04-05 10:52:49 -05:00
|
|
|
MetaTabList type,
|
2002-03-11 23:34:17 -05:00
|
|
|
MetaScreen *screen,
|
|
|
|
MetaWorkspace *workspace);
|
|
|
|
|
|
|
|
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
2002-04-05 10:52:49 -05:00
|
|
|
MetaTabList type,
|
2002-05-11 02:59:54 -04:00
|
|
|
MetaScreen *screen,
|
2002-03-11 23:34:17 -05:00
|
|
|
MetaWorkspace *workspace,
|
|
|
|
MetaWindow *window,
|
|
|
|
gboolean backward);
|
Screw around with Anders's ping patch so he'll get plenty of CVS
2002-02-26 Havoc Pennington <hp@pobox.com>
Screw around with Anders's ping patch so he'll get plenty of CVS
conflicts. ;-)
* src/display.c (meta_display_ping_window): spew warnings
if we try to call this with CurrentTime
(meta_display_ping_timeout): remove ping from the pending pings
after it times out.
* src/util.h: added PING debug category
* src/display.c (remove_pending_pings_for_window): don't remove
"tmp" just before "tmp->next", don't break out of loop after
finding the first match
(meta_display_open): no trailing comma in array init
(event_callback): move the processing of ping replies into a
separate function
* src/screen.c (set_supported_hint): add _NET_WM_PING to supported
list
* src/display.h: change gpointer to void*
2002-02-26 Anders Carlsson <andersca@gnu.org>
* src/display.c: (ping_data_free),
(remove_pending_pings_for_window), (meta_display_open),
(event_callback), (meta_display_unregister_x_window),
(meta_display_ping_timeout), (meta_display_ping_window),
(meta_display_window_has_pending_pings):
Implement meta_display_ping_window, and filter out scroll wheel
events.
* src/display.h:
Add MetaWindowPingFunc, meta_display_ping_window and
meta_display_window_has_pending_pings.
2002-02-26 21:05:39 -05:00
|
|
|
|
2002-09-04 00:15:46 -04:00
|
|
|
MetaWindow* meta_display_get_tab_current (MetaDisplay *display,
|
|
|
|
MetaTabList type,
|
|
|
|
MetaScreen *screen,
|
|
|
|
MetaWorkspace *workspace);
|
|
|
|
|
2002-03-17 12:22:23 -05:00
|
|
|
int meta_resize_gravity_from_grab_op (MetaGrabOp op);
|
|
|
|
|
2002-05-28 23:11:24 -04:00
|
|
|
gboolean meta_rectangle_intersect (MetaRectangle *src1,
|
|
|
|
MetaRectangle *src2,
|
|
|
|
MetaRectangle *dest);
|
|
|
|
|
2002-10-07 19:14:40 -04:00
|
|
|
void meta_display_devirtualize_modifiers (MetaDisplay *display,
|
|
|
|
MetaVirtualModifier modifiers,
|
|
|
|
unsigned int *mask);
|
|
|
|
|
2001-05-30 11:36:31 -04:00
|
|
|
#endif
|