mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-09 15:19:11 +02:00
Release 1.4.1
- Fix Issue 14 - Fix Issue 15 - Incorporate fixes from cage project
This commit is contained in:
parent
31d53c5a8d
commit
7790995e92
13 changed files with 77 additions and 21 deletions
31
Bugs.md
31
Bugs.md
|
|
@ -185,3 +185,34 @@ Steps to reproduce:
|
|||
* Edit tags
|
||||
* Observe suggestions not directly above the tags field
|
||||
|
||||
### Issue 14
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 1.4.1
|
||||
|
||||
Cagebreak up to and including release 1.4.0 makes the screen flicker, when
|
||||
invoking wl-copy or wl-paste.
|
||||
|
||||
Steps to reproduce:
|
||||
|
||||
* Open terminal
|
||||
* Invoke wl-copy
|
||||
* Observe screen flickering
|
||||
|
||||
### Issue 15
|
||||
|
||||
* github issue number: N/A
|
||||
* Fixed: 1.4.1
|
||||
|
||||
Cagebreak up to and including release 1.4.0 renders certain dropdown
|
||||
menus incorrectly.
|
||||
|
||||
Steps to reproduce:
|
||||
|
||||
* Open firefox
|
||||
* Download any file
|
||||
* Select "save file" such that the file location dialog box appears
|
||||
* Delete default file name and enter "." into the location bar, such that a long dropdown menu appears
|
||||
* Click on dialog box (not on the dropdown menu) to make the menu disappear
|
||||
* Observe flickering of the area, where the dropdown menu used to be
|
||||
|
||||
|
|
|
|||
|
|
@ -180,6 +180,11 @@ ninja -C build
|
|||
|
||||
For every release after 1.0.5, hashes will be provided.
|
||||
|
||||
1.4.1
|
||||
|
||||
* sha 256: c3e0ccceaf1078b91071c40b0ccb7c4f8e53ae38b05ee6637f9f39f7f6ece2cb
|
||||
* sha 512: fd77f39fc7a7e5376d8505a61d643ed4d8f4cfbbf38d70cf9ef6989645e8cc6cb9d4b1024d241dc689b6fd927a405c97b9c918b6994b8f9ab7406646f37b952d
|
||||
|
||||
1.4.0
|
||||
|
||||
* sha 256: 14aa93d890c62cc763b3b546a51ad8560479d5e91fa9f949858ae6bc785e80be
|
||||
|
|
@ -314,7 +319,7 @@ find bugs in other areas of the code.
|
|||
|
||||
Currently, there are memory leaks which do not seem to stem from our code but rather
|
||||
the code of wl-roots or some other library we depend on. We are working on the problem.
|
||||
In the meantime, add `-Ddetect-leaks=0` to the meson command to exclude memory leaks.
|
||||
In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks.
|
||||
|
||||
## Bugs
|
||||
|
||||
|
|
|
|||
12
cagebreak.c
12
cagebreak.c
|
|
@ -23,6 +23,7 @@
|
|||
#include <wlr/render/wlr_renderer.h>
|
||||
#include <wlr/types/wlr_compositor.h>
|
||||
#include <wlr/types/wlr_cursor.h>
|
||||
#include <wlr/types/wlr_data_control_v1.h>
|
||||
#include <wlr/types/wlr_data_device.h>
|
||||
#include <wlr/types/wlr_export_dmabuf_v1.h>
|
||||
#include <wlr/types/wlr_gamma_control_v1.h>
|
||||
|
|
@ -243,6 +244,7 @@ main(int argc, char *argv[]) {
|
|||
struct wlr_xdg_decoration_manager_v1 *xdg_decoration_manager = NULL;
|
||||
struct wlr_export_dmabuf_manager_v1 *export_dmabuf_manager = NULL;
|
||||
struct wlr_screencopy_manager_v1 *screencopy_manager = NULL;
|
||||
struct wlr_data_control_manager_v1 *data_control_manager = NULL;
|
||||
struct wlr_xdg_output_manager_v1 *output_manager = NULL;
|
||||
struct wlr_gamma_control_manager_v1 *gamma_control_manager = NULL;
|
||||
struct wlr_xdg_shell *xdg_shell = NULL;
|
||||
|
|
@ -355,6 +357,14 @@ main(int argc, char *argv[]) {
|
|||
goto end;
|
||||
}
|
||||
|
||||
data_control_manager =
|
||||
wlr_data_control_manager_v1_create(server.wl_display);
|
||||
if(!data_control_manager) {
|
||||
wlr_log(WLR_ERROR, "Unable to create the data control manager");
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* Configure a listener to be notified when new outputs are
|
||||
* available on the backend. We use this only to detect the
|
||||
* first output and ignore subsequent outputs. */
|
||||
|
|
@ -473,7 +483,7 @@ main(int argc, char *argv[]) {
|
|||
xwayland->display_name);
|
||||
}
|
||||
|
||||
if(wlr_xcursor_manager_load(xcursor_manager, 1)) {
|
||||
if(!wlr_xcursor_manager_load(xcursor_manager, 1)) {
|
||||
wlr_log(WLR_ERROR, "Cannot load XWayland XCursor theme");
|
||||
}
|
||||
struct wlr_xcursor *xcursor =
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
% CAGEBREAK-CONFIG(1) Version 1.4.0 | Cagebreak Manual
|
||||
% CAGEBREAK-CONFIG(1) Version 1.4.1 | Cagebreak Manual
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
% CAGEBREAK(1) Version 1.4.0 | Cagebreak Manual
|
||||
% CAGEBREAK(1) Version 1.4.1 | Cagebreak Manual
|
||||
|
||||
# NAME
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
project('cagebreak', 'c',
|
||||
version: '1.4.0',
|
||||
version: '1.4.1',
|
||||
license: 'MIT',
|
||||
default_options: [
|
||||
'c_std=c11',
|
||||
|
|
@ -196,7 +196,7 @@ reproducible_build_versions = {
|
|||
'wayland_client': '1.18.0',
|
||||
'wayland_cursor': '1.18.0',
|
||||
'wlroots': '0.11.0',
|
||||
'xkbcommon': '1.0.0',
|
||||
'xkbcommon': '1.0.1',
|
||||
'fontconfig': '2.13.91',
|
||||
'pixman': '0.40.0',
|
||||
'pango': '1.46.1',
|
||||
|
|
|
|||
6
output.c
6
output.c
|
|
@ -32,13 +32,13 @@
|
|||
#include <wlr/xwayland.h>
|
||||
|
||||
#include "keybinding.h"
|
||||
#include "view.h"
|
||||
#include "message.h"
|
||||
#include "output.h"
|
||||
#include "render.h"
|
||||
#include "seat.h"
|
||||
#include "server.h"
|
||||
#include "util.h"
|
||||
#include "view.h"
|
||||
#include "workspace.h"
|
||||
#if CG_HAS_XWAYLAND
|
||||
#include "xwayland.h"
|
||||
|
|
@ -594,8 +594,8 @@ handle_new_output(struct wl_listener *listener, void *data) {
|
|||
output->curr_workspace = 0;
|
||||
wl_list_init(&output->messages);
|
||||
|
||||
if(wlr_xcursor_manager_load(server->seat->xcursor_manager,
|
||||
wlr_output->scale)) {
|
||||
if(!wlr_xcursor_manager_load(server->seat->xcursor_manager,
|
||||
wlr_output->scale)) {
|
||||
wlr_log(WLR_ERROR,
|
||||
"Cannot load XCursor theme for output '%s' with scale %f",
|
||||
wlr_output->name, wlr_output->scale);
|
||||
|
|
|
|||
BIN
signatures/1.4.0.sig
Normal file
BIN
signatures/1.4.0.sig
Normal file
Binary file not shown.
Binary file not shown.
21
view.c
21
view.c
|
|
@ -74,6 +74,10 @@ view_child_finish(struct cg_view_child *child) {
|
|||
return;
|
||||
}
|
||||
|
||||
if(child->view != NULL && child->view->wlr_surface != NULL) {
|
||||
view_damage_whole(child->view);
|
||||
}
|
||||
|
||||
wl_list_remove(&child->link);
|
||||
wl_list_remove(&child->commit.link);
|
||||
wl_list_remove(&child->new_subsurface.link);
|
||||
|
|
@ -305,18 +309,18 @@ view_unmap(struct cg_view *view) {
|
|||
wl_list_remove(&view->link);
|
||||
|
||||
wl_list_remove(&view->new_subsurface.link);
|
||||
view->wlr_surface = NULL;
|
||||
|
||||
struct cg_view_child *child, *tmp;
|
||||
wl_list_for_each_safe(child, tmp, &view->children, link) {
|
||||
child->destroy(child);
|
||||
}
|
||||
|
||||
view->wlr_surface = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
view_map(struct cg_view *view, struct wlr_surface *surface) {
|
||||
struct cg_output *output = view->workspace->output;
|
||||
view_map(struct cg_view *view, struct wlr_surface *surface,
|
||||
struct cg_workspace *ws) {
|
||||
struct cg_output *output = ws->output;
|
||||
view->wlr_surface = surface;
|
||||
|
||||
struct wlr_subsurface *subsurface;
|
||||
|
|
@ -328,19 +332,18 @@ view_map(struct cg_view *view, struct wlr_surface *surface) {
|
|||
wl_signal_add(&view->wlr_surface->events.new_subsurface,
|
||||
&view->new_subsurface);
|
||||
|
||||
view->workspace = ws;
|
||||
|
||||
#if CG_HAS_XWAYLAND
|
||||
/* We shouldn't position override-redirect windows. They set
|
||||
their own (x,y) coordinates in handle_wayland_surface_map. */
|
||||
if(view->type == CG_XWAYLAND_VIEW && !xwayland_view_should_manage(view)) {
|
||||
wl_list_insert(
|
||||
&output->workspaces[output->curr_workspace]->unmanaged_views,
|
||||
&view->link);
|
||||
wl_list_insert(&ws->unmanaged_views, &view->link);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
view_position(view);
|
||||
wl_list_insert(&output->workspaces[output->curr_workspace]->views,
|
||||
&view->link);
|
||||
wl_list_insert(&ws->views, &view->link);
|
||||
}
|
||||
seat_set_focus(output->server->seat, view);
|
||||
}
|
||||
|
|
|
|||
3
view.h
3
view.h
|
|
@ -99,7 +99,8 @@ view_unmap(struct cg_view *view);
|
|||
void
|
||||
view_maximize(struct cg_view *view, const struct wlr_box *tile_box);
|
||||
void
|
||||
view_map(struct cg_view *view, struct wlr_surface *surface);
|
||||
view_map(struct cg_view *view, struct wlr_surface *surface,
|
||||
struct cg_workspace *ws);
|
||||
void
|
||||
view_destroy(struct cg_view *view);
|
||||
void
|
||||
|
|
|
|||
|
|
@ -300,7 +300,10 @@ handle_xdg_shell_surface_map(struct wl_listener *listener, void *_data) {
|
|||
wl_signal_add(&xdg_shell_view->xdg_surface->surface->events.commit,
|
||||
&xdg_shell_view->commit);
|
||||
|
||||
view_map(view, xdg_shell_view->xdg_surface->surface);
|
||||
view_map(
|
||||
view, xdg_shell_view->xdg_surface->surface,
|
||||
view->workspace->server->curr_output
|
||||
->workspaces[view->workspace->server->curr_output->curr_workspace]);
|
||||
view_damage_whole(view);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -188,7 +188,10 @@ handle_xwayland_surface_map(struct wl_listener *listener, void *_data) {
|
|||
wl_signal_add(&xwayland_view->xwayland_surface->surface->events.commit,
|
||||
&xwayland_view->commit);
|
||||
|
||||
view_map(view, xwayland_view->xwayland_surface->surface);
|
||||
view_map(
|
||||
view, xwayland_view->xwayland_surface->surface,
|
||||
view->workspace->server->curr_output
|
||||
->workspaces[view->workspace->server->curr_output->curr_workspace]);
|
||||
|
||||
view_damage_whole(view);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue