mirror of
https://github.com/swaywm/sway.git
synced 2024-12-27 23:47:21 +01:00
Chase wlroots X11 hints update
This commit is contained in:
parent
d726e50643
commit
acdb48a59c
3 changed files with 8 additions and 4 deletions
|
@ -69,6 +69,7 @@ bash_comp = dependency('bash-completion', required: false)
|
||||||
fish_comp = dependency('fish', required: false)
|
fish_comp = dependency('fish', required: false)
|
||||||
math = cc.find_library('m')
|
math = cc.find_library('m')
|
||||||
rt = cc.find_library('rt')
|
rt = cc.find_library('rt')
|
||||||
|
xcb_icccm = dependency('xcb-icccm', required: get_option('xwayland'))
|
||||||
|
|
||||||
wlroots_features = {
|
wlroots_features = {
|
||||||
'xwayland': false,
|
'xwayland': false,
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include <wlr/types/wlr_output.h>
|
#include <wlr/types/wlr_output.h>
|
||||||
#include <wlr/xwayland.h>
|
#include <wlr/xwayland.h>
|
||||||
|
#include <xcb/xcb_icccm.h>
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "sway/desktop.h"
|
#include "sway/desktop.h"
|
||||||
#include "sway/desktop/transaction.h"
|
#include "sway/desktop/transaction.h"
|
||||||
|
@ -311,7 +312,7 @@ static bool wants_floating(struct sway_view *view) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_xwayland_surface_size_hints *size_hints = surface->size_hints;
|
xcb_size_hints_t *size_hints = surface->size_hints;
|
||||||
if (size_hints != NULL &&
|
if (size_hints != NULL &&
|
||||||
size_hints->min_width > 0 && size_hints->min_height > 0 &&
|
size_hints->min_width > 0 && size_hints->min_height > 0 &&
|
||||||
(size_hints->max_width == size_hints->min_width ||
|
(size_hints->max_width == size_hints->min_width ||
|
||||||
|
@ -365,7 +366,7 @@ static void destroy(struct sway_view *view) {
|
||||||
static void get_constraints(struct sway_view *view, double *min_width,
|
static void get_constraints(struct sway_view *view, double *min_width,
|
||||||
double *max_width, double *min_height, double *max_height) {
|
double *max_width, double *min_height, double *max_height) {
|
||||||
struct wlr_xwayland_surface *surface = view->wlr_xwayland_surface;
|
struct wlr_xwayland_surface *surface = view->wlr_xwayland_surface;
|
||||||
struct wlr_xwayland_surface_size_hints *size_hints = surface->size_hints;
|
xcb_size_hints_t *size_hints = surface->size_hints;
|
||||||
|
|
||||||
if (size_hints == NULL) {
|
if (size_hints == NULL) {
|
||||||
*min_width = DBL_MIN;
|
*min_width = DBL_MIN;
|
||||||
|
@ -684,14 +685,15 @@ static void handle_set_hints(struct wl_listener *listener, void *data) {
|
||||||
if (!xsurface->mapped) {
|
if (!xsurface->mapped) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!xsurface->hints_urgency && view->urgent_timer) {
|
const bool hints_urgency = xcb_icccm_wm_hints_get_urgency(xsurface->hints);
|
||||||
|
if (!hints_urgency && view->urgent_timer) {
|
||||||
// The view is in the timeout period. We'll ignore the request to
|
// The view is in the timeout period. We'll ignore the request to
|
||||||
// unset urgency so that the view remains urgent until the timer clears
|
// unset urgency so that the view remains urgent until the timer clears
|
||||||
// it.
|
// it.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (view->allow_request_urgent) {
|
if (view->allow_request_urgent) {
|
||||||
view_set_urgent(view, (bool)xsurface->hints_urgency);
|
view_set_urgent(view, hints_urgency);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,7 @@ sway_deps = [
|
||||||
wayland_server,
|
wayland_server,
|
||||||
wlroots,
|
wlroots,
|
||||||
xkbcommon,
|
xkbcommon,
|
||||||
|
xcb_icccm,
|
||||||
]
|
]
|
||||||
|
|
||||||
if have_xwayland
|
if have_xwayland
|
||||||
|
|
Loading…
Reference in a new issue