mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 06:04:10 +00:00
frames: Embed a pointer to MetaFrames inside MetaUIFrame
This removes the MetaFrames argument from our internal APIs.
This commit is contained in:
parent
669c9da2a4
commit
015864da09
156
src/ui/frames.c
156
src/ui/frames.c
@ -40,8 +40,7 @@ static void meta_frames_destroy (GtkWidget *object);
|
|||||||
static void meta_frames_finalize (GObject *object);
|
static void meta_frames_finalize (GObject *object);
|
||||||
static void meta_frames_style_updated (GtkWidget *widget);
|
static void meta_frames_style_updated (GtkWidget *widget);
|
||||||
|
|
||||||
static void meta_frames_update_prelit_control (MetaFrames *frames,
|
static void meta_frames_update_prelit_control (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameControl control);
|
MetaFrameControl control);
|
||||||
static gboolean meta_frames_button_press_event (GtkWidget *widget,
|
static gboolean meta_frames_button_press_event (GtkWidget *widget,
|
||||||
GdkEventButton *event);
|
GdkEventButton *event);
|
||||||
@ -58,15 +57,12 @@ static gboolean meta_frames_enter_notify_event (GtkWidget *widget,
|
|||||||
static gboolean meta_frames_leave_notify_event (GtkWidget *widget,
|
static gboolean meta_frames_leave_notify_event (GtkWidget *widget,
|
||||||
GdkEventCrossing *event);
|
GdkEventCrossing *event);
|
||||||
|
|
||||||
static void meta_frames_attach_style (MetaFrames *frames,
|
static void meta_frames_attach_style (MetaUIFrame *frame);
|
||||||
MetaUIFrame *frame);
|
|
||||||
|
|
||||||
static void meta_frames_paint (MetaFrames *frames,
|
static void meta_frames_paint (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
cairo_t *cr);
|
cairo_t *cr);
|
||||||
|
|
||||||
static void meta_frames_calc_geometry (MetaFrames *frames,
|
static void meta_frames_calc_geometry (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameGeometry *fgeom);
|
MetaFrameGeometry *fgeom);
|
||||||
|
|
||||||
static MetaUIFrame* meta_frames_lookup_window (MetaFrames *frames,
|
static MetaUIFrame* meta_frames_lookup_window (MetaFrames *frames,
|
||||||
@ -78,12 +74,9 @@ static void meta_frames_button_layout_changed (MetaFrames *frames);
|
|||||||
|
|
||||||
static GdkRectangle* control_rect (MetaFrameControl control,
|
static GdkRectangle* control_rect (MetaFrameControl control,
|
||||||
MetaFrameGeometry *fgeom);
|
MetaFrameGeometry *fgeom);
|
||||||
static MetaFrameControl get_control (MetaFrames *frames,
|
static MetaFrameControl get_control (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
int x,
|
int x,
|
||||||
int y);
|
int y);
|
||||||
static void invalidate_whole_window (MetaFrames *frames,
|
|
||||||
MetaUIFrame *frame);
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaFrames, meta_frames, GTK_TYPE_WINDOW);
|
G_DEFINE_TYPE (MetaFrames, meta_frames, GTK_TYPE_WINDOW);
|
||||||
|
|
||||||
@ -167,6 +160,12 @@ prefs_changed_callback (MetaPreference pref,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
invalidate_whole_window (MetaUIFrame *frame)
|
||||||
|
{
|
||||||
|
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
static MetaStyleInfo *
|
static MetaStyleInfo *
|
||||||
meta_frames_get_theme_variant (MetaFrames *frames,
|
meta_frames_get_theme_variant (MetaFrames *frames,
|
||||||
const gchar *variant)
|
const gchar *variant)
|
||||||
@ -288,13 +287,9 @@ meta_frames_finalize (GObject *object)
|
|||||||
static void
|
static void
|
||||||
queue_recalc_func (gpointer key, gpointer value, gpointer data)
|
queue_recalc_func (gpointer key, gpointer value, gpointer data)
|
||||||
{
|
{
|
||||||
MetaUIFrame *frame;
|
MetaUIFrame *frame = value;
|
||||||
MetaFrames *frames;
|
|
||||||
|
|
||||||
frames = META_FRAMES (data);
|
invalidate_whole_window (frame);
|
||||||
frame = value;
|
|
||||||
|
|
||||||
invalidate_whole_window (frames, frame);
|
|
||||||
meta_core_queue_frame_resize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
|
meta_core_queue_frame_resize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
|
||||||
frame->xwindow);
|
frame->xwindow);
|
||||||
if (frame->text_layout)
|
if (frame->text_layout)
|
||||||
@ -326,13 +321,8 @@ meta_frames_font_changed (MetaFrames *frames)
|
|||||||
static void
|
static void
|
||||||
queue_draw_func (gpointer key, gpointer value, gpointer data)
|
queue_draw_func (gpointer key, gpointer value, gpointer data)
|
||||||
{
|
{
|
||||||
MetaUIFrame *frame;
|
MetaUIFrame *frame = value;
|
||||||
MetaFrames *frames;
|
invalidate_whole_window (frame);
|
||||||
|
|
||||||
frames = META_FRAMES (data);
|
|
||||||
frame = value;
|
|
||||||
|
|
||||||
invalidate_whole_window (frames, frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -345,13 +335,8 @@ meta_frames_button_layout_changed (MetaFrames *frames)
|
|||||||
static void
|
static void
|
||||||
reattach_style_func (gpointer key, gpointer value, gpointer data)
|
reattach_style_func (gpointer key, gpointer value, gpointer data)
|
||||||
{
|
{
|
||||||
MetaUIFrame *frame;
|
MetaUIFrame *frame = value;
|
||||||
MetaFrames *frames;
|
meta_frames_attach_style (frame);
|
||||||
|
|
||||||
frames = META_FRAMES (data);
|
|
||||||
frame = value;
|
|
||||||
|
|
||||||
meta_frames_attach_style (frames, frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -365,8 +350,7 @@ meta_frames_style_updated (GtkWidget *widget)
|
|||||||
|
|
||||||
update_style_contexts (frames);
|
update_style_contexts (frames);
|
||||||
|
|
||||||
g_hash_table_foreach (frames->frames,
|
g_hash_table_foreach (frames->frames, reattach_style_func, NULL);
|
||||||
reattach_style_func, frames);
|
|
||||||
|
|
||||||
meta_retheme_all ();
|
meta_retheme_all ();
|
||||||
|
|
||||||
@ -374,10 +358,10 @@ meta_frames_style_updated (GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_frames_ensure_layout (MetaFrames *frames,
|
meta_frames_ensure_layout (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameType type)
|
MetaFrameType type)
|
||||||
{
|
{
|
||||||
|
MetaFrames *frames = frame->frames;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
MetaFrameLayout *layout;
|
MetaFrameLayout *layout;
|
||||||
|
|
||||||
@ -444,8 +428,7 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_frames_calc_geometry (MetaFrames *frames,
|
meta_frames_calc_geometry (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameGeometry *fgeom)
|
MetaFrameGeometry *fgeom)
|
||||||
{
|
{
|
||||||
int width, height;
|
int width, height;
|
||||||
@ -460,7 +443,7 @@ meta_frames_calc_geometry (MetaFrames *frames,
|
|||||||
META_CORE_GET_FRAME_TYPE, &type,
|
META_CORE_GET_FRAME_TYPE, &type,
|
||||||
META_CORE_GET_END);
|
META_CORE_GET_END);
|
||||||
|
|
||||||
meta_frames_ensure_layout (frames, frame, type);
|
meta_frames_ensure_layout (frame, type);
|
||||||
|
|
||||||
meta_prefs_get_button_layout (&button_layout);
|
meta_prefs_get_button_layout (&button_layout);
|
||||||
|
|
||||||
@ -507,9 +490,9 @@ meta_frames_new (int screen_number)
|
|||||||
* and attach separately for each window.
|
* and attach separately for each window.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
meta_frames_attach_style (MetaFrames *frames,
|
meta_frames_attach_style (MetaUIFrame *frame)
|
||||||
MetaUIFrame *frame)
|
|
||||||
{
|
{
|
||||||
|
MetaFrames *frames = frame->frames;
|
||||||
gboolean has_frame;
|
gboolean has_frame;
|
||||||
char *variant = NULL;
|
char *variant = NULL;
|
||||||
|
|
||||||
@ -540,6 +523,7 @@ meta_frames_manage_window (MetaFrames *frames,
|
|||||||
|
|
||||||
frame = g_new (MetaUIFrame, 1);
|
frame = g_new (MetaUIFrame, 1);
|
||||||
|
|
||||||
|
frame->frames = frames;
|
||||||
frame->window = window;
|
frame->window = window;
|
||||||
|
|
||||||
gdk_window_set_user_data (frame->window, frames);
|
gdk_window_set_user_data (frame->window, frames);
|
||||||
@ -611,8 +595,7 @@ meta_frames_lookup_window (MetaFrames *frames,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_ui_frame_get_borders (MetaFrames *frames,
|
meta_ui_frame_get_borders (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameBorders *borders)
|
MetaFrameBorders *borders)
|
||||||
{
|
{
|
||||||
MetaFrameFlags flags;
|
MetaFrameFlags flags;
|
||||||
@ -625,7 +608,7 @@ meta_ui_frame_get_borders (MetaFrames *frames,
|
|||||||
|
|
||||||
g_return_if_fail (type < META_FRAME_TYPE_LAST);
|
g_return_if_fail (type < META_FRAME_TYPE_LAST);
|
||||||
|
|
||||||
meta_frames_ensure_layout (frames, frame, type);
|
meta_frames_ensure_layout (frame, type);
|
||||||
|
|
||||||
/* We can't get the full geometry, because that depends on
|
/* We can't get the full geometry, because that depends on
|
||||||
* the client window size and probably we're being called
|
* the client window size and probably we're being called
|
||||||
@ -652,7 +635,7 @@ meta_frames_get_borders (MetaFrames *frames,
|
|||||||
if (frame == NULL)
|
if (frame == NULL)
|
||||||
meta_bug ("No such frame 0x%lx\n", xwindow);
|
meta_bug ("No such frame 0x%lx\n", xwindow);
|
||||||
|
|
||||||
meta_ui_frame_get_borders (frames, frame, borders);
|
meta_ui_frame_get_borders (frame, borders);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The client rectangle surrounds client window; it subtracts both
|
/* The client rectangle surrounds client window; it subtracts both
|
||||||
@ -687,8 +670,7 @@ get_visible_frame_rect (MetaFrameGeometry *fgeom,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static cairo_region_t *
|
static cairo_region_t *
|
||||||
get_visible_region (MetaFrames *frames,
|
get_visible_region (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameGeometry *fgeom,
|
MetaFrameGeometry *fgeom,
|
||||||
int window_width,
|
int window_width,
|
||||||
int window_height)
|
int window_height)
|
||||||
@ -792,11 +774,9 @@ meta_frames_get_frame_bounds (MetaFrames *frames,
|
|||||||
frame = meta_frames_lookup_window (frames, xwindow);
|
frame = meta_frames_lookup_window (frames, xwindow);
|
||||||
g_return_val_if_fail (frame != NULL, NULL);
|
g_return_val_if_fail (frame != NULL, NULL);
|
||||||
|
|
||||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
meta_frames_calc_geometry (frame, &fgeom);
|
||||||
|
|
||||||
return get_visible_region (frames, frame,
|
return get_visible_region (frame, &fgeom, window_width, window_height);
|
||||||
&fgeom,
|
|
||||||
window_width, window_height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -816,7 +796,7 @@ meta_frames_move_resize_frame (MetaFrames *frames,
|
|||||||
gdk_window_move_resize (frame->window, x, y, width, height);
|
gdk_window_move_resize (frame->window, x, y, width, height);
|
||||||
|
|
||||||
if (old_width != width || old_height != height)
|
if (old_width != width || old_height != height)
|
||||||
invalidate_whole_window (frames, frame);
|
invalidate_whole_window (frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -827,7 +807,7 @@ meta_frames_queue_draw (MetaFrames *frames,
|
|||||||
|
|
||||||
frame = meta_frames_lookup_window (frames, xwindow);
|
frame = meta_frames_lookup_window (frames, xwindow);
|
||||||
|
|
||||||
invalidate_whole_window (frames, frame);
|
invalidate_whole_window (frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -846,7 +826,7 @@ meta_frames_set_title (MetaFrames *frames,
|
|||||||
|
|
||||||
g_clear_object (&frame->text_layout);
|
g_clear_object (&frame->text_layout);
|
||||||
|
|
||||||
invalidate_whole_window (frames, frame);
|
invalidate_whole_window (frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -859,8 +839,8 @@ meta_frames_update_frame_style (MetaFrames *frames,
|
|||||||
|
|
||||||
g_assert (frame);
|
g_assert (frame);
|
||||||
|
|
||||||
meta_frames_attach_style (frames, frame);
|
meta_frames_attach_style (frame);
|
||||||
invalidate_whole_window (frames, frame);
|
invalidate_whole_window (frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -880,14 +860,13 @@ meta_frames_repaint_frame (MetaFrames *frames,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
redraw_control (MetaFrames *frames,
|
redraw_control (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameControl control)
|
MetaFrameControl control)
|
||||||
{
|
{
|
||||||
MetaFrameGeometry fgeom;
|
MetaFrameGeometry fgeom;
|
||||||
GdkRectangle *rect;
|
GdkRectangle *rect;
|
||||||
|
|
||||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
meta_frames_calc_geometry (frame, &fgeom);
|
||||||
|
|
||||||
rect = control_rect (control, &fgeom);
|
rect = control_rect (control, &fgeom);
|
||||||
|
|
||||||
@ -1029,13 +1008,13 @@ meta_frame_right_click_event(MetaUIFrame *frame,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_frames_try_grab_op (MetaFrames *frames,
|
meta_frames_try_grab_op (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaGrabOp op,
|
MetaGrabOp op,
|
||||||
gdouble grab_x,
|
gdouble grab_x,
|
||||||
gdouble grab_y,
|
gdouble grab_y,
|
||||||
guint32 time)
|
guint32 time)
|
||||||
{
|
{
|
||||||
|
MetaFrames *frames = frame->frames;
|
||||||
Display *display;
|
Display *display;
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
|
|
||||||
@ -1106,7 +1085,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
|||||||
if (frame == NULL)
|
if (frame == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
control = get_control (frames, frame, event->x, event->y);
|
control = get_control (frame, event->x, event->y);
|
||||||
|
|
||||||
/* focus on click, even if click was on client area */
|
/* focus on click, even if click was on client area */
|
||||||
if (event->button == 1 &&
|
if (event->button == 1 &&
|
||||||
@ -1161,7 +1140,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
|||||||
frame->grab_button = event->button;
|
frame->grab_button = event->button;
|
||||||
frame->button_state = META_BUTTON_STATE_PRESSED;
|
frame->button_state = META_BUTTON_STATE_PRESSED;
|
||||||
frame->prelit_control = control;
|
frame->prelit_control = control;
|
||||||
redraw_control (frames, frame, control);
|
redraw_control (frame, control);
|
||||||
|
|
||||||
if (control == META_FRAME_CONTROL_MENU ||
|
if (control == META_FRAME_CONTROL_MENU ||
|
||||||
control == META_FRAME_CONTROL_APPMENU)
|
control == META_FRAME_CONTROL_APPMENU)
|
||||||
@ -1172,7 +1151,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
|||||||
MetaWindowMenuType menu;
|
MetaWindowMenuType menu;
|
||||||
int win_x, win_y;
|
int win_x, win_y;
|
||||||
|
|
||||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
meta_frames_calc_geometry (frame, &fgeom);
|
||||||
|
|
||||||
rect = control_rect (control, &fgeom);
|
rect = control_rect (control, &fgeom);
|
||||||
|
|
||||||
@ -1245,7 +1224,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_frames_try_grab_op (frames, frame, op,
|
meta_frames_try_grab_op (frame, op,
|
||||||
event->x_root, event->y_root,
|
event->x_root, event->y_root,
|
||||||
event->time);
|
event->time);
|
||||||
}
|
}
|
||||||
@ -1260,7 +1239,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
|||||||
|
|
||||||
if (flags & META_FRAME_ALLOWS_MOVE)
|
if (flags & META_FRAME_ALLOWS_MOVE)
|
||||||
{
|
{
|
||||||
meta_frames_try_grab_op (frames, frame,
|
meta_frames_try_grab_op (frame,
|
||||||
META_GRAB_OP_MOVING,
|
META_GRAB_OP_MOVING,
|
||||||
event->x_root, event->y_root,
|
event->x_root, event->y_root,
|
||||||
event->time);
|
event->time);
|
||||||
@ -1345,16 +1324,15 @@ meta_frames_button_release_event (GtkWidget *widget,
|
|||||||
* prelit so to let the user know that it can now be pressed.
|
* prelit so to let the user know that it can now be pressed.
|
||||||
* :)
|
* :)
|
||||||
*/
|
*/
|
||||||
MetaFrameControl control = get_control (frames, frame, event->x, event->y);
|
MetaFrameControl control = get_control (frame, event->x, event->y);
|
||||||
meta_frames_update_prelit_control (frames, frame, control);
|
meta_frames_update_prelit_control (frame, control);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_frames_update_prelit_control (MetaFrames *frames,
|
meta_frames_update_prelit_control (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
MetaFrameControl control)
|
MetaFrameControl control)
|
||||||
{
|
{
|
||||||
MetaFrameControl old_control;
|
MetaFrameControl old_control;
|
||||||
@ -1460,8 +1438,8 @@ meta_frames_update_prelit_control (MetaFrames *frames,
|
|||||||
frame->button_state = META_BUTTON_STATE_PRELIGHT;
|
frame->button_state = META_BUTTON_STATE_PRELIGHT;
|
||||||
frame->prelit_control = control;
|
frame->prelit_control = control;
|
||||||
|
|
||||||
redraw_control (frames, frame, old_control);
|
redraw_control (frame, old_control);
|
||||||
redraw_control (frames, frame, control);
|
redraw_control (frame, control);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -1479,7 +1457,7 @@ meta_frames_motion_notify_event (GtkWidget *widget,
|
|||||||
|
|
||||||
frames->last_motion_frame = frame;
|
frames->last_motion_frame = frame;
|
||||||
|
|
||||||
control = get_control (frames, frame, event->x, event->y);
|
control = get_control (frame, event->x, event->y);
|
||||||
|
|
||||||
if (frame->button_state == META_BUTTON_STATE_PRESSED)
|
if (frame->button_state == META_BUTTON_STATE_PRESSED)
|
||||||
{
|
{
|
||||||
@ -1488,13 +1466,13 @@ meta_frames_motion_notify_event (GtkWidget *widget,
|
|||||||
if (frame->prelit_control != control)
|
if (frame->prelit_control != control)
|
||||||
{
|
{
|
||||||
frame->button_state = META_BUTTON_STATE_NORMAL;
|
frame->button_state = META_BUTTON_STATE_NORMAL;
|
||||||
redraw_control (frames, frame, frame->prelit_control);
|
redraw_control (frame, frame->prelit_control);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Update prelit control and cursor */
|
/* Update prelit control and cursor */
|
||||||
meta_frames_update_prelit_control (frames, frame, control);
|
meta_frames_update_prelit_control (frame, control);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event->state & GDK_BUTTON1_MASK) &&
|
if ((event->state & GDK_BUTTON1_MASK) &&
|
||||||
@ -1605,7 +1583,7 @@ meta_frames_get_mask (MetaFrames *frames,
|
|||||||
META_CORE_GET_END);
|
META_CORE_GET_END);
|
||||||
|
|
||||||
meta_style_info_set_flags (frame->style_info, flags);
|
meta_style_info_set_flags (frame->style_info, flags);
|
||||||
meta_ui_frame_get_borders (frames, frame, &borders);
|
meta_ui_frame_get_borders (frame, &borders);
|
||||||
gtk_render_background (frame->style_info->styles[META_STYLE_ELEMENT_FRAME], cr,
|
gtk_render_background (frame->style_info->styles[META_STYLE_ELEMENT_FRAME], cr,
|
||||||
borders.invisible.left, borders.invisible.top,
|
borders.invisible.left, borders.invisible.top,
|
||||||
width - borders.invisible.left - borders.invisible.right,
|
width - borders.invisible.left - borders.invisible.right,
|
||||||
@ -1647,15 +1625,14 @@ meta_frames_draw (GtkWidget *widget,
|
|||||||
gdk_cairo_region (cr, region);
|
gdk_cairo_region (cr, region);
|
||||||
cairo_clip (cr);
|
cairo_clip (cr);
|
||||||
|
|
||||||
meta_frames_paint (frames, frame, cr);
|
meta_frames_paint (frame, cr);
|
||||||
cairo_region_destroy (region);
|
cairo_region_destroy (region);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_frames_paint (MetaFrames *frames,
|
meta_frames_paint (MetaUIFrame *frame,
|
||||||
MetaUIFrame *frame,
|
|
||||||
cairo_t *cr)
|
cairo_t *cr)
|
||||||
{
|
{
|
||||||
MetaFrameFlags flags;
|
MetaFrameFlags flags;
|
||||||
@ -1727,7 +1704,7 @@ meta_frames_paint (MetaFrames *frames,
|
|||||||
META_CORE_GET_CLIENT_HEIGHT, &h,
|
META_CORE_GET_CLIENT_HEIGHT, &h,
|
||||||
META_CORE_GET_END);
|
META_CORE_GET_END);
|
||||||
|
|
||||||
meta_frames_ensure_layout (frames, frame, type);
|
meta_frames_ensure_layout (frame, type);
|
||||||
|
|
||||||
meta_prefs_get_button_layout (&button_layout);
|
meta_prefs_get_button_layout (&button_layout);
|
||||||
|
|
||||||
@ -1760,8 +1737,8 @@ meta_frames_enter_notify_event (GtkWidget *widget,
|
|||||||
|
|
||||||
frame->maybe_ignore_leave_notify = FALSE;
|
frame->maybe_ignore_leave_notify = FALSE;
|
||||||
|
|
||||||
control = get_control (frames, frame, event->x, event->y);
|
control = get_control (frame, event->x, event->y);
|
||||||
meta_frames_update_prelit_control (frames, frame, control);
|
meta_frames_update_prelit_control (frame, control);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1793,7 +1770,7 @@ meta_frames_leave_notify_event (GtkWidget *widget,
|
|||||||
if (frame->maybe_ignore_leave_notify)
|
if (frame->maybe_ignore_leave_notify)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
meta_frames_update_prelit_control (frames, frame, META_FRAME_CONTROL_NONE);
|
meta_frames_update_prelit_control (frame, META_FRAME_CONTROL_NONE);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1872,9 +1849,7 @@ control_rect (MetaFrameControl control,
|
|||||||
#define TOP_RESIZE_HEIGHT 4
|
#define TOP_RESIZE_HEIGHT 4
|
||||||
#define CORNER_SIZE_MULT 2
|
#define CORNER_SIZE_MULT 2
|
||||||
static MetaFrameControl
|
static MetaFrameControl
|
||||||
get_control (MetaFrames *frames,
|
get_control (MetaUIFrame *frame, int x, int y)
|
||||||
MetaUIFrame *frame,
|
|
||||||
int x, int y)
|
|
||||||
{
|
{
|
||||||
MetaFrameGeometry fgeom;
|
MetaFrameGeometry fgeom;
|
||||||
MetaFrameFlags flags;
|
MetaFrameFlags flags;
|
||||||
@ -1883,7 +1858,7 @@ get_control (MetaFrames *frames,
|
|||||||
gboolean has_north_resize;
|
gboolean has_north_resize;
|
||||||
cairo_rectangle_int_t client;
|
cairo_rectangle_int_t client;
|
||||||
|
|
||||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
meta_frames_calc_geometry (frame, &fgeom);
|
||||||
get_client_rect (&fgeom, fgeom.width, fgeom.height, &client);
|
get_client_rect (&fgeom, fgeom.width, fgeom.height, &client);
|
||||||
|
|
||||||
if (POINT_IN_RECT (x, y, client))
|
if (POINT_IN_RECT (x, y, client))
|
||||||
@ -2027,10 +2002,3 @@ get_control (MetaFrames *frames,
|
|||||||
else
|
else
|
||||||
return META_FRAME_CONTROL_TITLE;
|
return META_FRAME_CONTROL_TITLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
invalidate_whole_window (MetaFrames *frames,
|
|
||||||
MetaUIFrame *frame)
|
|
||||||
{
|
|
||||||
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
|
|
||||||
}
|
|
||||||
|
@ -72,6 +72,7 @@ typedef struct _MetaUIFrame MetaUIFrame;
|
|||||||
|
|
||||||
struct _MetaUIFrame
|
struct _MetaUIFrame
|
||||||
{
|
{
|
||||||
|
MetaFrames *frames;
|
||||||
Window xwindow;
|
Window xwindow;
|
||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
MetaStyleInfo *style_info;
|
MetaStyleInfo *style_info;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user