Compare commits
10 Commits
3.10.0.1-w
...
3.10.1-way
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c3f28b9cdb | ||
![]() |
dc4e1d4cd1 | ||
![]() |
d69553e8f5 | ||
![]() |
0ead0d945a | ||
![]() |
c24d9bf142 | ||
![]() |
a6bf340ff8 | ||
![]() |
35ef7c95b2 | ||
![]() |
348f3007d9 | ||
![]() |
52e2a1226e | ||
![]() |
58622c0515 |
10
NEWS
10
NEWS
@@ -1,3 +1,13 @@
|
|||||||
|
3.10.1
|
||||||
|
======
|
||||||
|
* Don't apply fullscreen workarounds to CSD windows [Giovanni; #708718]
|
||||||
|
* Fix hangs during DND operations [Adel; #709340]
|
||||||
|
* Misc bug fixes [Dan, Giovanni, Jasper; #708813, #708420]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Adel Gadllah, Dan Horák, Hans Petter Jansson,
|
||||||
|
Jasper St. Pierre
|
||||||
|
|
||||||
3.10.0.1
|
3.10.0.1
|
||||||
========
|
========
|
||||||
* Fix bug when a window changed size twice in a single frame - this
|
* Fix bug when a window changed size twice in a single frame - this
|
||||||
|
@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
|
|||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [10])
|
m4_define([mutter_minor_version], [10])
|
||||||
m4_define([mutter_micro_version], [0.1])
|
m4_define([mutter_micro_version], [1])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include <meta/meta-shaped-texture.h>
|
#include <meta/meta-shaped-texture.h>
|
||||||
#include <meta/util.h>
|
#include <meta/util.h>
|
||||||
|
#include "clutter-utils.h"
|
||||||
#include "meta-texture-tower.h"
|
#include "meta-texture-tower.h"
|
||||||
|
|
||||||
#include "meta-shaped-texture-private.h"
|
#include "meta-shaped-texture-private.h"
|
||||||
@@ -280,6 +281,7 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
CoglTexture *paint_tex;
|
CoglTexture *paint_tex;
|
||||||
ClutterActorBox alloc;
|
ClutterActorBox alloc;
|
||||||
cairo_region_t *blended_region = NULL;
|
cairo_region_t *blended_region = NULL;
|
||||||
|
CoglPipelineFilter filter;
|
||||||
|
|
||||||
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
||||||
return;
|
return;
|
||||||
@@ -316,6 +318,22 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Use nearest-pixel interpolation if the texture is unscaled. This
|
||||||
|
* improves performance, especially with software rendering.
|
||||||
|
*/
|
||||||
|
|
||||||
|
filter = COGL_PIPELINE_FILTER_LINEAR;
|
||||||
|
|
||||||
|
if (!clutter_actor_is_in_clone_paint (actor))
|
||||||
|
{
|
||||||
|
int x_origin, y_origin;
|
||||||
|
|
||||||
|
if (meta_actor_is_untransformed (actor,
|
||||||
|
&x_origin,
|
||||||
|
&y_origin))
|
||||||
|
filter = COGL_PIPELINE_FILTER_NEAREST;
|
||||||
|
}
|
||||||
|
|
||||||
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
fb = cogl_get_draw_framebuffer ();
|
fb = cogl_get_draw_framebuffer ();
|
||||||
|
|
||||||
@@ -344,6 +362,7 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
|
|
||||||
opaque_pipeline = get_unblended_pipeline (ctx);
|
opaque_pipeline = get_unblended_pipeline (ctx);
|
||||||
cogl_pipeline_set_layer_texture (opaque_pipeline, 0, paint_tex);
|
cogl_pipeline_set_layer_texture (opaque_pipeline, 0, paint_tex);
|
||||||
|
cogl_pipeline_set_layer_filters (opaque_pipeline, 0, filter, filter);
|
||||||
|
|
||||||
n_rects = cairo_region_num_rectangles (region);
|
n_rects = cairo_region_num_rectangles (region);
|
||||||
for (i = 0; i < n_rects; i++)
|
for (i = 0; i < n_rects; i++)
|
||||||
@@ -385,9 +404,11 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
{
|
{
|
||||||
pipeline = get_masked_pipeline (ctx);
|
pipeline = get_masked_pipeline (ctx);
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
||||||
|
cogl_pipeline_set_layer_filters (pipeline, 1, filter, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
||||||
|
cogl_pipeline_set_layer_filters (pipeline, 0, filter, filter);
|
||||||
|
|
||||||
{
|
{
|
||||||
CoglColor color;
|
CoglColor color;
|
||||||
|
@@ -1007,7 +1007,7 @@ queue_send_frame_messages_timeout (MetaWindowActor *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
interval = (int)(1000000 / refresh_rate) * 6;
|
interval = (int)(1000000 / refresh_rate) * 6;
|
||||||
offset = MAX (0, current_time - priv->frame_drawn_time + interval) / 1000;
|
offset = MAX (0, priv->frame_drawn_time + interval - current_time) / 1000;
|
||||||
|
|
||||||
/* The clutter master clock source has already been added with META_PRIORITY_REDRAW,
|
/* The clutter master clock source has already been added with META_PRIORITY_REDRAW,
|
||||||
* so the timer will run *after* the clutter frame handling, if a frame is ready
|
* so the timer will run *after* the clutter frame handling, if a frame is ready
|
||||||
|
@@ -447,12 +447,14 @@ setup_constraint_info (ConstraintInfo *info,
|
|||||||
|
|
||||||
/* Workaround braindead legacy apps that don't know how to
|
/* Workaround braindead legacy apps that don't know how to
|
||||||
* fullscreen themselves properly - don't get fooled by
|
* fullscreen themselves properly - don't get fooled by
|
||||||
* windows which hide their titlebar when maximized; that's
|
* windows which hide their titlebar when maximized or which are
|
||||||
* not the same as fullscreen, even if there are no struts
|
* client decorated; that's not the same as fullscreen, even
|
||||||
* making the workarea smaller than the monitor.
|
* if there are no struts making the workarea smaller than
|
||||||
|
* the monitor.
|
||||||
*/
|
*/
|
||||||
if (meta_prefs_get_force_fullscreen() &&
|
if (meta_prefs_get_force_fullscreen() &&
|
||||||
!window->hide_titlebar_when_maximized &&
|
!window->hide_titlebar_when_maximized &&
|
||||||
|
window->decorated &&
|
||||||
meta_rectangle_equal (new, &monitor_info->rect) &&
|
meta_rectangle_equal (new, &monitor_info->rect) &&
|
||||||
window->has_fullscreen_func &&
|
window->has_fullscreen_func &&
|
||||||
!window->fullscreen)
|
!window->fullscreen)
|
||||||
|
@@ -51,7 +51,6 @@
|
|||||||
#include <meta/compositor.h>
|
#include <meta/compositor.h>
|
||||||
#include <meta/compositor-mutter.h>
|
#include <meta/compositor-mutter.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <X11/cursorfont.h>
|
|
||||||
#include "mutter-enum-types.h"
|
#include "mutter-enum-types.h"
|
||||||
#include "meta-idle-monitor-private.h"
|
#include "meta-idle-monitor-private.h"
|
||||||
|
|
||||||
@@ -3959,85 +3958,6 @@ meta_display_xwindow_is_a_no_focus_window (MetaDisplay *display,
|
|||||||
return is_a_no_focus_window;
|
return is_a_no_focus_window;
|
||||||
}
|
}
|
||||||
|
|
||||||
Cursor
|
|
||||||
meta_display_create_x_cursor (MetaDisplay *display,
|
|
||||||
MetaCursor cursor)
|
|
||||||
{
|
|
||||||
Cursor xcursor;
|
|
||||||
guint glyph = XC_num_glyphs;
|
|
||||||
const char *name = NULL;
|
|
||||||
|
|
||||||
switch (cursor)
|
|
||||||
{
|
|
||||||
case META_CURSOR_DEFAULT:
|
|
||||||
glyph = XC_left_ptr;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NORTH_RESIZE:
|
|
||||||
glyph = XC_top_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SOUTH_RESIZE:
|
|
||||||
glyph = XC_bottom_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_WEST_RESIZE:
|
|
||||||
glyph = XC_left_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_EAST_RESIZE:
|
|
||||||
glyph = XC_right_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SE_RESIZE:
|
|
||||||
glyph = XC_bottom_right_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SW_RESIZE:
|
|
||||||
glyph = XC_bottom_left_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NE_RESIZE:
|
|
||||||
glyph = XC_top_right_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NW_RESIZE:
|
|
||||||
glyph = XC_top_left_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_MOVE_OR_RESIZE_WINDOW:
|
|
||||||
glyph = XC_fleur;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_BUSY:
|
|
||||||
glyph = XC_watch;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_IN_DRAG:
|
|
||||||
name = "dnd-none";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_MOVE:
|
|
||||||
name = "dnd-move";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_COPY:
|
|
||||||
name = "dnd-copy";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_UNSUPPORTED_TARGET:
|
|
||||||
name = "dnd-none";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_POINTING_HAND:
|
|
||||||
glyph = XC_hand2;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_CROSSHAIR:
|
|
||||||
glyph = XC_crosshair;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_IBEAM:
|
|
||||||
glyph = XC_xterm;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
glyph = 0; /* silence compiler */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name != NULL)
|
|
||||||
xcursor = XcursorLibraryLoadCursor (display->xdisplay, name);
|
|
||||||
else
|
|
||||||
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
|
||||||
|
|
||||||
return xcursor;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Cursor
|
static Cursor
|
||||||
xcursor_for_op (MetaDisplay *display,
|
xcursor_for_op (MetaDisplay *display,
|
||||||
MetaGrabOp op)
|
MetaGrabOp op)
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
|
|
||||||
|
#include <X11/cursorfont.h>
|
||||||
#include <X11/extensions/Xfixes.h>
|
#include <X11/extensions/Xfixes.h>
|
||||||
#include <X11/Xcursor/Xcursor.h>
|
#include <X11/Xcursor/Xcursor.h>
|
||||||
|
|
||||||
@@ -128,76 +129,130 @@ meta_cursor_reference_unref (MetaCursorReference *self)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static void
|
||||||
get_cursor_filename (MetaCursor cursor)
|
translate_meta_cursor (MetaCursor cursor,
|
||||||
|
guint *glyph_out,
|
||||||
|
const char **name_out)
|
||||||
{
|
{
|
||||||
|
guint glyph = XC_num_glyphs;
|
||||||
|
const char *name = NULL;
|
||||||
|
|
||||||
switch (cursor)
|
switch (cursor)
|
||||||
{
|
{
|
||||||
case META_CURSOR_DEFAULT:
|
case META_CURSOR_DEFAULT:
|
||||||
return "left_ptr";
|
glyph = XC_left_ptr;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_NORTH_RESIZE:
|
case META_CURSOR_NORTH_RESIZE:
|
||||||
return "top_side";
|
glyph = XC_top_side;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_SOUTH_RESIZE:
|
case META_CURSOR_SOUTH_RESIZE:
|
||||||
return "bottom_side";
|
glyph = XC_bottom_side;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_WEST_RESIZE:
|
case META_CURSOR_WEST_RESIZE:
|
||||||
return "left_side";
|
glyph = XC_left_side;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_EAST_RESIZE:
|
case META_CURSOR_EAST_RESIZE:
|
||||||
return "right_side";
|
glyph = XC_right_side;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_SE_RESIZE:
|
case META_CURSOR_SE_RESIZE:
|
||||||
return "bottom_right_corner";
|
glyph = XC_bottom_right_corner;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_SW_RESIZE:
|
case META_CURSOR_SW_RESIZE:
|
||||||
return "bottom_left_corner";
|
glyph = XC_bottom_left_corner;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_NE_RESIZE:
|
case META_CURSOR_NE_RESIZE:
|
||||||
return "top_right_corner";
|
glyph = XC_top_right_corner;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_NW_RESIZE:
|
case META_CURSOR_NW_RESIZE:
|
||||||
return "top_left_corner";
|
glyph = XC_top_left_corner;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_MOVE_OR_RESIZE_WINDOW:
|
case META_CURSOR_MOVE_OR_RESIZE_WINDOW:
|
||||||
return "fleur";
|
glyph = XC_fleur;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_BUSY:
|
case META_CURSOR_BUSY:
|
||||||
return "watch";
|
glyph = XC_watch;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_DND_IN_DRAG:
|
case META_CURSOR_DND_IN_DRAG:
|
||||||
return "dnd-in-drag";
|
name = "dnd-none";
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_DND_MOVE:
|
case META_CURSOR_DND_MOVE:
|
||||||
return "dnd-copy";
|
name = "dnd-move";
|
||||||
|
break;
|
||||||
|
case META_CURSOR_DND_COPY:
|
||||||
|
name = "dnd-copy";
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_DND_UNSUPPORTED_TARGET:
|
case META_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||||
return "dnd-none";
|
name = "dnd-none";
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_POINTING_HAND:
|
case META_CURSOR_POINTING_HAND:
|
||||||
return "hand";
|
glyph = XC_hand2;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_CROSSHAIR:
|
case META_CURSOR_CROSSHAIR:
|
||||||
return "crosshair";
|
glyph = XC_crosshair;
|
||||||
break;
|
break;
|
||||||
case META_CURSOR_IBEAM:
|
case META_CURSOR_IBEAM:
|
||||||
return "xterm";
|
glyph = XC_xterm;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
return NULL;
|
glyph = 0; /* silence compiler */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*glyph_out = glyph;
|
||||||
|
*name_out = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Cursor
|
||||||
|
load_cursor_on_server (MetaDisplay *display,
|
||||||
|
MetaCursor cursor)
|
||||||
|
{
|
||||||
|
Cursor xcursor;
|
||||||
|
guint glyph;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
translate_meta_cursor (cursor, &glyph, &name);
|
||||||
|
|
||||||
|
if (name != NULL)
|
||||||
|
xcursor = XcursorLibraryLoadCursor (display->xdisplay, name);
|
||||||
|
else
|
||||||
|
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
||||||
|
|
||||||
|
return xcursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cursor
|
||||||
|
meta_display_create_x_cursor (MetaDisplay *display,
|
||||||
|
MetaCursor cursor)
|
||||||
|
{
|
||||||
|
return load_cursor_on_server (display, cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static XcursorImage *
|
||||||
|
load_cursor_on_client (MetaDisplay *display,
|
||||||
|
MetaCursor cursor)
|
||||||
|
{
|
||||||
|
XcursorImage *image;
|
||||||
|
guint glyph;
|
||||||
|
const char *name;
|
||||||
|
const char *theme = XcursorGetTheme (display->xdisplay);
|
||||||
|
int size = XcursorGetDefaultSize (display->xdisplay);
|
||||||
|
|
||||||
|
translate_meta_cursor (cursor, &glyph, &name);
|
||||||
|
|
||||||
|
if (name != NULL)
|
||||||
|
image = XcursorLibraryLoadImage (name, theme, size);
|
||||||
|
else
|
||||||
|
image = XcursorShapeLoadImage (glyph, theme, size);
|
||||||
|
|
||||||
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaCursorReference *
|
static MetaCursorReference *
|
||||||
meta_cursor_reference_from_theme (MetaCursorTracker *tracker,
|
meta_cursor_reference_from_theme (MetaCursorTracker *tracker,
|
||||||
MetaCursor cursor)
|
MetaCursor cursor)
|
||||||
{
|
{
|
||||||
const char *theme;
|
|
||||||
const char *filename;
|
|
||||||
int size;
|
|
||||||
XcursorImage *image;
|
XcursorImage *image;
|
||||||
int width, height, rowstride;
|
int width, height, rowstride;
|
||||||
CoglPixelFormat cogl_format;
|
CoglPixelFormat cogl_format;
|
||||||
@@ -206,11 +261,7 @@ meta_cursor_reference_from_theme (MetaCursorTracker *tracker,
|
|||||||
CoglContext *cogl_context;
|
CoglContext *cogl_context;
|
||||||
MetaCursorReference *self;
|
MetaCursorReference *self;
|
||||||
|
|
||||||
filename = get_cursor_filename (cursor);
|
image = load_cursor_on_client (tracker->screen->display, cursor);
|
||||||
theme = XcursorGetTheme (tracker->screen->display->xdisplay);
|
|
||||||
size = XcursorGetDefaultSize (tracker->screen->display->xdisplay);
|
|
||||||
|
|
||||||
image = XcursorLibraryLoadImage (filename, theme, size);
|
|
||||||
if (!image)
|
if (!image)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -320,7 +371,7 @@ meta_cursor_reference_from_buffer (MetaCursorTracker *tracker,
|
|||||||
cogl_internal_format = COGL_PIXEL_FORMAT_ANY;
|
cogl_internal_format = COGL_PIXEL_FORMAT_ANY;
|
||||||
gbm_format = GBM_FORMAT_ARGB8888;
|
gbm_format = GBM_FORMAT_ARGB8888;
|
||||||
break;
|
break;
|
||||||
case WL_SHM_FORMAT_XRGB32:
|
case WL_SHM_FORMAT_XRGB8888:
|
||||||
cogl_format = COGL_PIXEL_FORMAT_ARGB_8888;
|
cogl_format = COGL_PIXEL_FORMAT_ARGB_8888;
|
||||||
cogl_internal_format = COGL_PIXEL_FORMAT_RGB_888;
|
cogl_internal_format = COGL_PIXEL_FORMAT_RGB_888;
|
||||||
gbm_format = GBM_FORMAT_XRGB8888;
|
gbm_format = GBM_FORMAT_XRGB8888;
|
||||||
|
@@ -293,6 +293,7 @@ idle_monitor_watch_free (MetaIdleMonitorWatch *watch)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
monitor = watch->monitor;
|
monitor = watch->monitor;
|
||||||
|
g_object_ref (monitor);
|
||||||
|
|
||||||
if (watch->idle_source_id)
|
if (watch->idle_source_id)
|
||||||
{
|
{
|
||||||
@@ -313,6 +314,7 @@ idle_monitor_watch_free (MetaIdleMonitorWatch *watch)
|
|||||||
if (watch->timeout_source != NULL)
|
if (watch->timeout_source != NULL)
|
||||||
g_source_destroy (watch->timeout_source);
|
g_source_destroy (watch->timeout_source);
|
||||||
|
|
||||||
|
g_object_unref (monitor);
|
||||||
g_slice_free (MetaIdleMonitorWatch, watch);
|
g_slice_free (MetaIdleMonitorWatch, watch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1724,14 +1724,12 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
* or top window in same group as not_this_one.
|
* or top window in same group as not_this_one.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
MetaWindow *topmost_dock;
|
|
||||||
MetaWindow *transient_parent;
|
MetaWindow *transient_parent;
|
||||||
MetaWindow *topmost_in_group;
|
MetaWindow *topmost_in_group;
|
||||||
MetaWindow *topmost_overall;
|
MetaWindow *topmost_overall;
|
||||||
MetaGroup *not_this_one_group;
|
MetaGroup *not_this_one_group;
|
||||||
GList *link;
|
GList *link;
|
||||||
|
|
||||||
topmost_dock = NULL;
|
|
||||||
transient_parent = NULL;
|
transient_parent = NULL;
|
||||||
topmost_in_group = NULL;
|
topmost_in_group = NULL;
|
||||||
topmost_overall = NULL;
|
topmost_overall = NULL;
|
||||||
@@ -1757,10 +1755,6 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_located_on_workspace (window, workspace)))
|
meta_window_located_on_workspace (window, workspace)))
|
||||||
{
|
{
|
||||||
if (topmost_dock == NULL &&
|
|
||||||
window->type == META_WINDOW_DOCK)
|
|
||||||
topmost_dock = window;
|
|
||||||
|
|
||||||
if (not_this_one != NULL)
|
if (not_this_one != NULL)
|
||||||
{
|
{
|
||||||
if (transient_parent == NULL &&
|
if (transient_parent == NULL &&
|
||||||
@@ -1778,10 +1772,6 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
topmost_in_group = window;
|
topmost_in_group = window;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note that DESKTOP windows can be topmost_overall so
|
|
||||||
* we prefer focusing desktop or other windows over
|
|
||||||
* focusing dock, even though docks are stacked higher.
|
|
||||||
*/
|
|
||||||
if (topmost_overall == NULL &&
|
if (topmost_overall == NULL &&
|
||||||
window->type != META_WINDOW_DOCK &&
|
window->type != META_WINDOW_DOCK &&
|
||||||
(!must_be_at_point ||
|
(!must_be_at_point ||
|
||||||
@@ -1803,7 +1793,7 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
else if (topmost_overall)
|
else if (topmost_overall)
|
||||||
return topmost_overall;
|
return topmost_overall;
|
||||||
else
|
else
|
||||||
return topmost_dock;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaWindow*
|
MetaWindow*
|
||||||
|
@@ -419,13 +419,13 @@ typedef struct
|
|||||||
*/
|
*/
|
||||||
GSList *bindings;
|
GSList *bindings;
|
||||||
|
|
||||||
/** for keybindings that can have shift or not like Alt+Tab */
|
/* for keybindings that can have shift or not like Alt+Tab */
|
||||||
gboolean add_shift:1;
|
gboolean add_shift:1;
|
||||||
|
|
||||||
/** for keybindings that apply only to a window */
|
/* for keybindings that apply only to a window */
|
||||||
gboolean per_window:1;
|
gboolean per_window:1;
|
||||||
|
|
||||||
/** for keybindings not added with meta_display_add_keybinding() */
|
/* for keybindings not added with meta_display_add_keybinding() */
|
||||||
gboolean builtin:1;
|
gboolean builtin:1;
|
||||||
} MetaKeyPref;
|
} MetaKeyPref;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user