ui: Excise old frames UI

This is no longer used, in favor of the standalone frames client.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1077
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2175>
This commit is contained in:
Carlos Garnacho 2022-09-09 16:10:15 +02:00 committed by Marge Bot
parent f2237fa0c8
commit 92feea3033
15 changed files with 0 additions and 4092 deletions

View File

@ -28,7 +28,6 @@
#include "backends/meta-backend-private.h" #include "backends/meta-backend-private.h"
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "backends/meta-monitor-manager-private.h" #include "backends/meta-monitor-manager-private.h"
#include "ui/theme-private.h"
#ifndef XWAYLAND_GRAB_DEFAULT_ACCESS_RULES #ifndef XWAYLAND_GRAB_DEFAULT_ACCESS_RULES
# warning "XWAYLAND_GRAB_DEFAULT_ACCESS_RULES is not set" # warning "XWAYLAND_GRAB_DEFAULT_ACCESS_RULES is not set"

View File

@ -42,7 +42,6 @@
#include "core/display-private.h" #include "core/display-private.h"
#include "core/util-private.h" #include "core/util-private.h"
#include "meta/main.h" #include "meta/main.h"
#include "ui/ui.h"
#include "x11/meta-x11-display-private.h" #include "x11/meta-x11-display-private.h"
static gboolean restart_helper_started = FALSE; static gboolean restart_helper_started = FALSE;

View File

@ -84,7 +84,6 @@
#include "meta/meta-enum-types.h" #include "meta/meta-enum-types.h"
#include "meta/meta-x11-errors.h" #include "meta/meta-x11-errors.h"
#include "meta/prefs.h" #include "meta/prefs.h"
#include "ui/ui.h"
#include "x11/meta-x11-display-private.h" #include "x11/meta-x11-display-private.h"
#include "x11/window-props.h" #include "x11/window-props.h"
#include "x11/window-x11.h" #include "x11/window-x11.h"

View File

@ -447,12 +447,6 @@ if have_x11_client
'compositor/meta-sync-ring.h', 'compositor/meta-sync-ring.h',
'compositor/meta-window-actor-x11.c', 'compositor/meta-window-actor-x11.c',
'compositor/meta-window-actor-x11.h', 'compositor/meta-window-actor-x11.h',
'ui/frames.c',
'ui/frames.h',
'ui/theme.c',
'ui/theme-private.h',
'ui/ui.c',
'ui/ui.h',
'x11/atomnames.h', 'x11/atomnames.h',
'x11/events.c', 'x11/events.c',
'x11/events.h', 'x11/events.h',

View File

@ -40,7 +40,6 @@ mutter_public_headers = [
'meta-window-shape.h', 'meta-window-shape.h',
'meta-workspace-manager.h', 'meta-workspace-manager.h',
'prefs.h', 'prefs.h',
'theme.h',
'types.h', 'types.h',
'util.h', 'util.h',
'window.h', 'window.h',

View File

@ -1,41 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity Theme Rendering */
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef META_THEME_H
#define META_THEME_H
#include <glib.h>
/**
* MetaTheme:
*
*/
typedef struct _MetaTheme MetaTheme;
META_EXPORT
MetaTheme* meta_theme_get_default (void);
META_EXPORT
MetaTheme* meta_theme_new (void);
META_EXPORT
void meta_theme_free (MetaTheme *theme);
#endif

View File

@ -31,7 +31,6 @@
#include "meta/window.h" #include "meta/window.h"
#include "core/meta-workspace-manager-private.h" #include "core/meta-workspace-manager-private.h"
#include "tests/meta-test-utils.h" #include "tests/meta-test-utils.h"
#include "ui/ui.h"
#include "wayland/meta-wayland.h" #include "wayland/meta-wayland.h"
#include "x11/meta-x11-display-private.h" #include "x11/meta-x11-display-private.h"
@ -241,13 +240,6 @@ test_case_assert_stacking (TestCase *test,
if (window != NULL && window->title) if (window != NULL && window->title)
{ {
/* See comment in meta_ui_new() about why the dummy window for GTK+ theming
* is managed as a MetaWindow.
*/
if (META_STACK_ID_IS_X11 (windows[i]) &&
meta_ui_window_is_dummy (display->x11_display->ui, windows[i]))
continue;
if (stack_string->len > 0) if (stack_string->len > 0)
g_string_append_c (stack_string, ' '); g_string_append_c (stack_string, ' ');

File diff suppressed because it is too large Load Diff

View File

@ -1,155 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity window frame manager widget */
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef META_FRAMES_H
#define META_FRAMES_H
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include "meta/common.h"
#include "meta/types.h"
#include "ui/theme-private.h"
#include "ui/ui.h"
typedef enum
{
META_FRAME_CONTROL_NONE,
META_FRAME_CONTROL_TITLE,
META_FRAME_CONTROL_DELETE,
META_FRAME_CONTROL_MENU,
META_FRAME_CONTROL_MINIMIZE,
META_FRAME_CONTROL_MAXIMIZE,
META_FRAME_CONTROL_UNMAXIMIZE,
META_FRAME_CONTROL_RESIZE_SE,
META_FRAME_CONTROL_RESIZE_S,
META_FRAME_CONTROL_RESIZE_SW,
META_FRAME_CONTROL_RESIZE_N,
META_FRAME_CONTROL_RESIZE_NE,
META_FRAME_CONTROL_RESIZE_NW,
META_FRAME_CONTROL_RESIZE_W,
META_FRAME_CONTROL_RESIZE_E,
META_FRAME_CONTROL_CLIENT_AREA
} MetaFrameControl;
/* This is one widget that manages all the window frames
* as subwindows.
*/
#define META_TYPE_FRAMES (meta_frames_get_type ())
#define META_FRAMES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_FRAMES, MetaFrames))
#define META_FRAMES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_FRAMES, MetaFramesClass))
#define META_IS_FRAMES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_FRAMES))
#define META_IS_FRAMES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_FRAMES))
#define META_FRAMES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_FRAMES, MetaFramesClass))
typedef struct _MetaFrames MetaFrames;
typedef struct _MetaFramesClass MetaFramesClass;
struct _MetaUIFrame
{
MetaFrames *frames;
MetaWindow *meta_window;
Window xwindow;
GdkWindow *window;
MetaStyleInfo *style_info;
MetaFrameLayout *cache_layout;
PangoLayout *text_layout;
int text_height;
char *title; /* NULL once we have a layout */
guint maybe_ignore_leave_notify : 1;
/* FIXME get rid of this, it can just be in the MetaFrames struct */
MetaFrameControl prelit_control;
MetaButtonState button_state;
int grab_button;
gboolean is_frozen;
};
struct _MetaFrames
{
GtkWindow parent_instance;
MetaX11Display *x11_display;
GHashTable *text_heights;
GHashTable *frames;
MetaStyleInfo *normal_style;
GHashTable *style_variants;
GSettings *interface_settings;
MetaGrabOp current_grab_op;
MetaUIFrame *grab_frame;
guint grab_button;
gdouble grab_x;
gdouble grab_y;
ClutterEventSequence *grab_touch;
float last_click_x;
float last_click_y;
uint32_t last_click_time;
int click_count;
};
struct _MetaFramesClass
{
GtkWindowClass parent_class;
};
GType meta_frames_get_type (void) G_GNUC_CONST;
MetaFrames * meta_frames_new (MetaX11Display *x11_display);
MetaUIFrame * meta_frames_manage_window (MetaFrames *frames,
MetaWindow *meta_window,
Window xwindow,
GdkWindow *window);
void meta_ui_frame_unmanage (MetaUIFrame *frame);
void meta_ui_frame_set_title (MetaUIFrame *frame,
const char *title);
void meta_ui_frame_update_style (MetaUIFrame *frame);
void meta_ui_frame_get_borders (MetaUIFrame *frame,
MetaFrameBorders *borders);
cairo_region_t * meta_ui_frame_get_bounds (MetaUIFrame *frame);
void meta_ui_frame_get_mask (MetaUIFrame *frame,
cairo_rectangle_int_t *frame_rect,
cairo_t *cr);
void meta_ui_frame_move_resize (MetaUIFrame *frame,
int x, int y, int width, int height);
void meta_ui_frame_queue_draw (MetaUIFrame *frame);
gboolean meta_ui_frame_handle_event (MetaUIFrame *frame, const ClutterEvent *event);
#endif

View File

@ -1,281 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity Theme Rendering */
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef META_THEME_PRIVATE_H
#define META_THEME_PRIVATE_H
#include <gtk/gtk.h>
#include "meta/boxes.h"
#include "meta/common.h"
#include "meta/theme.h"
/**
* MetaStyleInfo: (skip)
*
*/
typedef struct _MetaStyleInfo MetaStyleInfo;
/**
* MetaFrameLayout: (skip)
*
*/
typedef struct _MetaFrameLayout MetaFrameLayout;
/**
* MetaButtonSpace: (skip)
*
*/
typedef struct _MetaButtonSpace MetaButtonSpace;
/**
* MetaFrameGeometry: (skip)
*
*/
typedef struct _MetaFrameGeometry MetaFrameGeometry;
/**
* Various parameters used to calculate the geometry of a frame.
**/
struct _MetaFrameLayout
{
/** Invisible border required by the theme */
GtkBorder invisible_border;
/** Border/padding of the entire frame */
GtkBorder frame_border;
/** Border/padding of the titlebar region */
GtkBorder titlebar_border;
/** Border/padding of titlebar buttons */
GtkBorder button_border;
/** Margin of title */
GtkBorder title_margin;
/** Margin of titlebar buttons */
GtkBorder button_margin;
/** Min size of titlebar region */
GtkRequisition titlebar_min_size;
/** Min size of titlebar buttons */
GtkRequisition button_min_size;
/** Size of images in buttons */
guint icon_size;
/** Space between titlebar elements */
guint titlebar_spacing;
/** scale factor for title text */
double title_scale;
/** Whether title text will be displayed */
guint has_title : 1;
/** Whether we should hide the buttons */
guint hide_buttons : 1;
/** Radius of the top left-hand corner; 0 if not rounded */
guint top_left_corner_rounded_radius;
/** Radius of the top right-hand corner; 0 if not rounded */
guint top_right_corner_rounded_radius;
/** Radius of the bottom left-hand corner; 0 if not rounded */
guint bottom_left_corner_rounded_radius;
/** Radius of the bottom right-hand corner; 0 if not rounded */
guint bottom_right_corner_rounded_radius;
};
/**
* The computed size of a button (really just a way of tying its
* visible and clickable areas together).
* The reason for two different rectangles here is Fitts' law & maximized
* windows; see bug #97703 for more details.
*/
struct _MetaButtonSpace
{
/** The screen area where the button's image is drawn */
GdkRectangle visible;
/** The screen area where the button can be activated by clicking */
GdkRectangle clickable;
};
/**
* Calculated actual geometry of the frame
*/
struct _MetaFrameGeometry
{
MetaFrameBorders borders;
int width;
int height;
GdkRectangle title_rect;
GtkBorder content_border;
/* used for a memset hack */
#define ADDRESS_OF_BUTTON_RECTS(fgeom) (((char*)(fgeom)) + G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
#define LENGTH_OF_BUTTON_RECTS (G_STRUCT_OFFSET (MetaFrameGeometry, menu_rect) + sizeof (MetaButtonSpace) - G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
/* The button rects (if changed adjust memset hack) */
MetaButtonSpace close_rect;
MetaButtonSpace max_rect;
MetaButtonSpace min_rect;
MetaButtonSpace menu_rect;
/* End of button rects (if changed adjust memset hack) */
/* Saved button layout */
MetaButtonLayout button_layout;
int n_left_buttons;
int n_right_buttons;
/* Round corners */
guint top_left_corner_rounded_radius;
guint top_right_corner_rounded_radius;
guint bottom_left_corner_rounded_radius;
guint bottom_right_corner_rounded_radius;
};
typedef enum
{
META_BUTTON_STATE_NORMAL,
META_BUTTON_STATE_PRESSED,
META_BUTTON_STATE_PRELIGHT,
META_BUTTON_STATE_LAST
} MetaButtonState;
typedef enum
{
META_BUTTON_TYPE_CLOSE,
META_BUTTON_TYPE_MAXIMIZE,
META_BUTTON_TYPE_MINIMIZE,
META_BUTTON_TYPE_MENU,
META_BUTTON_TYPE_LAST
} MetaButtonType;
typedef enum
{
META_STYLE_ELEMENT_WINDOW,
META_STYLE_ELEMENT_FRAME,
META_STYLE_ELEMENT_TITLEBAR,
META_STYLE_ELEMENT_TITLE,
META_STYLE_ELEMENT_BUTTON,
META_STYLE_ELEMENT_IMAGE,
META_STYLE_ELEMENT_LAST
} MetaStyleElement;
struct _MetaStyleInfo
{
int refcount;
GtkStyleContext *styles[META_STYLE_ELEMENT_LAST];
};
/* Kinds of frame...
*
* normal -> focused / unfocused
* max -> focused / unfocused
* shaded -> focused / unfocused
* max/shaded -> focused / unfocused
*
* so 4 states with 2 sub-states each, meaning 8 total
*
* 8 window states times 7 or 8 window types. Except some
* window types never get a frame so that narrows it down a bit.
*
*/
typedef enum
{
META_FRAME_STATE_NORMAL,
META_FRAME_STATE_MAXIMIZED,
META_FRAME_STATE_TILED_LEFT,
META_FRAME_STATE_TILED_RIGHT,
META_FRAME_STATE_SHADED,
META_FRAME_STATE_MAXIMIZED_AND_SHADED,
META_FRAME_STATE_TILED_LEFT_AND_SHADED,
META_FRAME_STATE_TILED_RIGHT_AND_SHADED,
META_FRAME_STATE_LAST
} MetaFrameState;
typedef enum
{
META_FRAME_FOCUS_NO,
META_FRAME_FOCUS_YES,
META_FRAME_FOCUS_LAST
} MetaFrameFocus;
/**
* A theme. This is a singleton class which groups all settings from a theme
* together.
*/
struct _MetaTheme
{
MetaFrameLayout *layouts[META_FRAME_TYPE_LAST];
};
void meta_frame_layout_apply_scale (const MetaFrameLayout *layout,
PangoFontDescription *font_desc);
MetaFrameLayout* meta_theme_get_frame_layout (MetaTheme *theme,
MetaFrameType type);
MetaStyleInfo * meta_theme_create_style_info (GdkScreen *screen,
const gchar *variant);
MetaStyleInfo * meta_style_info_ref (MetaStyleInfo *style);
void meta_style_info_unref (MetaStyleInfo *style_info);
void meta_style_info_set_flags (MetaStyleInfo *style_info,
MetaFrameFlags flags);
PangoFontDescription * meta_style_info_create_font_desc (MetaStyleInfo *style_info);
void meta_theme_draw_frame (MetaTheme *theme,
MetaStyleInfo *style_info,
cairo_t *cr,
MetaFrameType type,
MetaFrameFlags flags,
int client_width,
int client_height,
PangoLayout *title_layout,
int text_height,
const MetaButtonLayout *button_layout,
MetaButtonState button_states[META_BUTTON_TYPE_LAST],
cairo_surface_t *mini_icon);
void meta_theme_get_frame_borders (MetaTheme *theme,
MetaStyleInfo *style_info,
MetaFrameType type,
int text_height,
MetaFrameFlags flags,
MetaFrameBorders *borders);
void meta_theme_calc_geometry (MetaTheme *theme,
MetaStyleInfo *style_info,
MetaFrameType type,
int text_height,
MetaFrameFlags flags,
int client_width,
int client_height,
const MetaButtonLayout *button_layout,
MetaFrameGeometry *fgeom);
/* random stuff */
int meta_pango_font_desc_get_text_height (const PangoFontDescription *font_desc,
PangoContext *context);
int meta_theme_get_window_scaling_factor (void);
#endif /* META_THEME_PRIVATE_H */

File diff suppressed because it is too large Load Diff

View File

@ -1,240 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Mutter interface for talking to GTK+ UI module */
/*
* Copyright (C) 2002 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, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <cairo-xlib.h>
#include <stdlib.h>
#include <string.h>
#include "meta/prefs.h"
#include "meta/util.h"
#include "ui/frames.h"
#include "ui/theme-private.h"
#include "ui/ui.h"
#include "x11/meta-x11-display-private.h"
#include "x11/meta-x11-window-control.h"
struct _MetaUI
{
Display *xdisplay;
MetaFrames *frames;
/* For double-click tracking */
gint button_click_number;
Window button_click_window;
int button_click_x;
int button_click_y;
guint32 button_click_time;
};
MetaUI *
meta_ui_new (MetaX11Display *x11_display)
{
MetaUI *ui;
if (!gtk_init_check (NULL, NULL))
meta_fatal ("Unable to initialize GTK");
g_assert (x11_display->gdk_display == gdk_display_get_default ());
ui = g_new0 (MetaUI, 1);
ui->xdisplay = x11_display->xdisplay;
ui->frames = meta_frames_new (x11_display);
/* GTK+ needs the frame-sync protocol to work in order to properly
* handle style changes. This means that the dummy widget we create
* to get the style for title bars actually needs to be mapped
* and fully tracked as a MetaWindow. Horrible, but mostly harmless -
* the window is a 1x1 override redirect window positioned offscreen.
*/
gtk_widget_show (GTK_WIDGET (ui->frames));
g_object_set_data (G_OBJECT (x11_display->gdk_display), "meta-ui", ui);
return ui;
}
void
meta_ui_free (MetaUI *ui)
{
GdkDisplay *gdk_display;
gtk_widget_destroy (GTK_WIDGET (ui->frames));
gdk_display = gdk_x11_lookup_xdisplay (ui->xdisplay);
g_object_set_data (G_OBJECT (gdk_display), "meta-ui", NULL);
g_free (ui);
}
static void
set_background_none (Display *xdisplay,
Window xwindow)
{
XSetWindowAttributes attrs;
attrs.background_pixmap = None;
XChangeWindowAttributes (xdisplay, xwindow,
CWBackPixmap, &attrs);
}
MetaUIFrame *
meta_ui_create_frame (MetaUI *ui,
Display *xdisplay,
MetaWindow *meta_window,
Visual *xvisual,
gint x,
gint y,
gint width,
gint height,
gulong *create_serial)
{
GdkDisplay *display = gdk_x11_lookup_xdisplay (xdisplay);
GdkScreen *screen;
GdkWindowAttr attrs;
gint attributes_mask;
GdkWindow *window;
GdkVisual *visual;
screen = gdk_display_get_default_screen (display);
/* Default depth/visual handles clients with weird visuals; they can
* always be children of the root depth/visual obviously, but
* e.g. DRI games can't be children of a parent that has the same
* visual as the client.
*/
if (!xvisual)
visual = gdk_screen_get_system_visual (screen);
else
{
visual = gdk_x11_screen_lookup_visual (screen,
XVisualIDFromVisual (xvisual));
}
attrs.title = NULL;
attrs.event_mask = GDK_EXPOSURE_MASK;
attrs.x = x;
attrs.y = y;
attrs.wclass = GDK_INPUT_OUTPUT;
attrs.visual = visual;
attrs.window_type = GDK_WINDOW_CHILD;
attrs.cursor = NULL;
attrs.wmclass_name = NULL;
attrs.wmclass_class = NULL;
attrs.override_redirect = FALSE;
attrs.width = width;
attrs.height = height;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
/* We make an assumption that gdk_window_new() is going to call
* XCreateWindow as it's first operation; this seems to be true currently
* as long as you pass in a colormap.
*/
if (create_serial)
*create_serial = XNextRequest (xdisplay);
window =
gdk_window_new (gdk_screen_get_root_window(screen),
&attrs, attributes_mask);
gdk_window_resize (window, width, height);
set_background_none (xdisplay, GDK_WINDOW_XID (window));
return meta_frames_manage_window (ui->frames, meta_window, GDK_WINDOW_XID (window), window);
}
void
meta_ui_map_frame (MetaUI *ui,
Window xwindow)
{
GdkWindow *window;
GdkDisplay *display;
display = gdk_x11_lookup_xdisplay (ui->xdisplay);
window = gdk_x11_window_lookup_for_display (display, xwindow);
if (window)
gdk_window_show_unraised (window);
}
void
meta_ui_unmap_frame (MetaUI *ui,
Window xwindow)
{
GdkWindow *window;
GdkDisplay *display;
display = gdk_x11_lookup_xdisplay (ui->xdisplay);
window = gdk_x11_window_lookup_for_display (display, xwindow);
if (window)
gdk_window_hide (window);
}
gboolean
meta_ui_window_should_not_cause_focus (Display *xdisplay,
Window xwindow)
{
GdkWindow *window;
GdkDisplay *display;
display = gdk_x11_lookup_xdisplay (xdisplay);
window = gdk_x11_window_lookup_for_display (display, xwindow);
/* we shouldn't cause focus if we're an override redirect
* toplevel which is not foreign
*/
if (window && gdk_window_get_window_type (window) == GDK_WINDOW_TEMP)
return TRUE;
else
return FALSE;
}
gboolean
meta_ui_window_is_widget (MetaUI *ui,
Window xwindow)
{
GdkDisplay *display;
GdkWindow *window;
display = gdk_x11_lookup_xdisplay (ui->xdisplay);
window = gdk_x11_window_lookup_for_display (display, xwindow);
if (window)
{
void *user_data = NULL;
gdk_window_get_user_data (window, &user_data);
return user_data != NULL && user_data != ui->frames;
}
else
return FALSE;
}
gboolean
meta_ui_window_is_dummy (MetaUI *ui,
Window xwindow)
{
GdkWindow *frames_window = gtk_widget_get_window (GTK_WIDGET (ui->frames));
return xwindow == gdk_x11_window_get_xid (frames_window);
}

View File

@ -1,68 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Mutter interface for talking to GTK+ UI module */
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef META_UI_H
#define META_UI_H
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <cairo.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <glib.h>
#include "core/util-private.h"
#include "meta/types.h"
typedef struct _MetaUI MetaUI;
typedef struct _MetaUIFrame MetaUIFrame;
typedef gboolean (* MetaEventFunc) (XEvent *xevent, gpointer data);
MetaUI *meta_ui_new (MetaX11Display *x11_display);
void meta_ui_free (MetaUI *ui);
MetaUIFrame * meta_ui_create_frame (MetaUI *ui,
Display *xdisplay,
MetaWindow *meta_window,
Visual *xvisual,
gint x,
gint y,
gint width,
gint height,
gulong *create_serial);
/* GDK insists on tracking map/unmap */
void meta_ui_map_frame (MetaUI *ui,
Window xwindow);
void meta_ui_unmap_frame (MetaUI *ui,
Window xwindow);
gboolean meta_ui_window_should_not_cause_focus (Display *xdisplay,
Window xwindow);
gboolean meta_ui_window_is_widget (MetaUI *ui,
Window xwindow);
META_EXPORT_TEST
gboolean meta_ui_window_is_dummy (MetaUI *ui,
Window xwindow);
#endif

View File

@ -36,7 +36,6 @@
#include "meta/meta-x11-display.h" #include "meta/meta-x11-display.h"
#include "meta-startup-notification-x11.h" #include "meta-startup-notification-x11.h"
#include "meta-x11-stack-private.h" #include "meta-x11-stack-private.h"
#include "ui/ui.h"
#include "x11/meta-sync-counter.h" #include "x11/meta-sync-counter.h"
typedef struct _MetaGroupPropHooks MetaGroupPropHooks; typedef struct _MetaGroupPropHooks MetaGroupPropHooks;
@ -130,8 +129,6 @@ struct _MetaX11Display
GPtrArray *alarm_filters; GPtrArray *alarm_filters;
MetaUI *ui;
GSubprocess *frames_client; GSubprocess *frames_client;
GCancellable *frames_client_cancellable; GCancellable *frames_client_cancellable;

View File

@ -90,7 +90,6 @@ from The Open Group.
#include "core/util-private.h" #include "core/util-private.h"
#include "core/window-private.h" #include "core/window-private.h"
#include "meta/meta-x11-errors.h" #include "meta/meta-x11-errors.h"
#include "ui/ui.h"
#include "x11/meta-x11-display-private.h" #include "x11/meta-x11-display-private.h"
#include "x11/mutter-Xatomtype.h" #include "x11/mutter-Xatomtype.h"