[Pkg-deepin-devel] Bug#988193: unblock: deepin-terminal/5.0.0+ds1-3
Arun Kumar Pariyar
openarungeek at gmail.com
Fri May 7 12:39:05 BST 2021
Package: release.debian.org
Severity: normal
User: release.debian.org at packages.debian.org
Usertags: unblock
X-Debbugs-Cc: pkg-deepin-devel at lists.alioth.debian.org
Please unblock package deepin-terminal
[ Reason ]
Cherry-picked patch is included that fixes FTBFS RC bug #987933 and an
old normal
bug #894323. Also related to #986869.
[ Impact ]
As its affected by FTBFS, the package will fail to build in the new vala
related to the changes in x11 bindings.
[ Tests ]
Manual testing was done in local machine. The package built successfully
with the
cherry-picked patch and executed fine.
[ Risks ]
Trivial, leaf package.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
unblock deepin-terminal/5.0.0+ds1-3
-------------- next part --------------
diff -Nru deepin-terminal-5.0.0+ds1/debian/changelog deepin-terminal-5.0.0+ds1/debian/changelog
--- deepin-terminal-5.0.0+ds1/debian/changelog 2020-04-24 05:03:02.000000000 +0545
+++ deepin-terminal-5.0.0+ds1/debian/changelog 2021-05-03 00:46:19.000000000 +0545
@@ -1,3 +1,12 @@
+deepin-terminal (5.0.0+ds1-3) unstable; urgency=medium
+
+ * debian/patches:
+ + Add 0004-basic-wayland-support patch file. (Closes: #987933, #894323)
+ * debian/control:
+ + Add Arun Kumar Pariyar to uploaders list.
+
+ -- Arun Kumar Pariyar <openarungeek at gmail.com> Mon, 03 May 2021 00:46:19 +0545
+
deepin-terminal (5.0.0+ds1-2) unstable; urgency=high
* debian/patches: Add upstream PR to fix FTBFS with new libvte
diff -Nru deepin-terminal-5.0.0+ds1/debian/control deepin-terminal-5.0.0+ds1/debian/control
--- deepin-terminal-5.0.0+ds1/debian/control 2020-04-24 05:02:41.000000000 +0545
+++ deepin-terminal-5.0.0+ds1/debian/control 2021-05-03 00:46:19.000000000 +0545
@@ -6,6 +6,7 @@
Yangfl <mmyangfl at gmail.com>,
Yanhao Mo <yanhaocs at gmail.com>,
Boyuan Yang <byang at debian.org>,
+ Arun Kumar Pariyar <openarungeek at gmail.com>,
Build-Depends:
cmake,
debhelper-compat (= 12),
diff -Nru deepin-terminal-5.0.0+ds1/debian/patches/0004-basic-wayland-support.patch deepin-terminal-5.0.0+ds1/debian/patches/0004-basic-wayland-support.patch
--- deepin-terminal-5.0.0+ds1/debian/patches/0004-basic-wayland-support.patch 1970-01-01 05:30:00.000000000 +0530
+++ deepin-terminal-5.0.0+ds1/debian/patches/0004-basic-wayland-support.patch 2021-05-03 00:46:19.000000000 +0545
@@ -0,0 +1,376 @@
+From: Gary Wang <wzc782970009 at gmail.com>
+Date: Sun, 12 Jan 2020 21:30:47 +0800
+Subject: [PATCH] feat: basic wayland support
+Origin: upstream, https://github.com/linuxdeepin/deepin-terminal-gtk/commit/4797cc462a803726a0001ecc2e8e5b7d10d013cd
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987933
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894323
+
+---
+ lib/utils.vala | 55 ++++++++++++++---
+ lib/xutils.vala | 113 ----------------------------------
+ widget/quake_window.vala | 11 +---
+ widget/window.vala | 16 ++---
+ widget/window_event_area.vala | 32 +++++-----
+ 5 files changed, 75 insertions(+), 152 deletions(-)
+ delete mode 100644 lib/xutils.vala
+
+diff --git a/lib/utils.vala b/lib/utils.vala
+index bd1b2ec5..07e3f399 100644
+--- a/lib/utils.vala
++++ b/lib/utils.vala
+@@ -3,8 +3,10 @@
+ *
+ * Copyright (C) 2011 ~ 2018 Deepin, Inc.
+ * 2011 ~ 2018 Wang Yong
++ * 2019 ~ 2020 Gary Wang
+ *
+ * Author: Wang Yong <wangyong at deepin.com>
++ * Gary Wang <wzc782970009 at gmail.com>
+ * Maintainer: Wang Yong <wangyong at deepin.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+@@ -186,18 +188,53 @@ namespace Utils {
+ return alloc;
+ }
+
+- public bool move_window(Gtk.Widget widget, Gdk.EventButton event, Gtk.Window window) {
+- if (is_left_button(event)) {
+- window.begin_move_drag(
+- (int)event.button,
+- (int)event.x_root,
+- (int)event.y_root,
+- event.time);
++ public bool move_window(Gtk.Widget widget, Gdk.EventButton event) {
++ if (is_primary_button(event)) {
++ widget.get_toplevel().get_window().begin_move_drag(
++ (int) event.button,
++ (int) event.x_root,
++ (int) event.y_root,
++ event.time
++ );
+ }
+
+ return false;
+ }
+
++ public bool resize_window(Gtk.Widget widget, Gdk.EventButton event, Gdk.CursorType cursor_type) {
++ widget.get_toplevel().get_window().begin_resize_drag(
++ cursor_type_to_window_edge(cursor_type),
++ (int) event.button,
++ (int) event.x_root,
++ (int) event.y_root,
++ event.time
++ );
++
++ return true;
++ }
++
++ public Gdk.WindowEdge? cursor_type_to_window_edge(Gdk.CursorType cursor_type) {
++ if (cursor_type == Gdk.CursorType.TOP_LEFT_CORNER) {
++ return WindowEdge.NORTH_WEST;
++ } else if (cursor_type == Gdk.CursorType.TOP_SIDE) {
++ return WindowEdge.NORTH;
++ } else if (cursor_type == Gdk.CursorType.TOP_RIGHT_CORNER) {
++ return WindowEdge.NORTH_EAST;
++ } else if (cursor_type == Gdk.CursorType.RIGHT_SIDE) {
++ return WindowEdge.EAST;
++ } else if (cursor_type == Gdk.CursorType.BOTTOM_RIGHT_CORNER) {
++ return WindowEdge.SOUTH_EAST;
++ } else if (cursor_type == Gdk.CursorType.BOTTOM_SIDE) {
++ return WindowEdge.SOUTH;
++ } else if (cursor_type == Gdk.CursorType.BOTTOM_LEFT_CORNER) {
++ return WindowEdge.SOUTH_WEST;
++ } else if (cursor_type == Gdk.CursorType.LEFT_SIDE) {
++ return WindowEdge.WEST;
++ }
++
++ return null;
++ }
++
+ public void toggle_max_window(Gtk.Window window) {
+ var window_state = window.get_window().get_state();
+ if (Gdk.WindowState.MAXIMIZED in window_state) {
+@@ -207,6 +244,10 @@ namespace Utils {
+ }
+ }
+
++ public bool is_primary_button(Gdk.EventButton event) {
++ return event.button == Gdk.BUTTON_PRIMARY;
++ }
++
+ public bool is_left_button(Gdk.EventButton event) {
+ return event.button == 1;
+ }
+diff --git a/lib/xutils.vala b/lib/xutils.vala
+deleted file mode 100644
+index 014c28ef..00000000
+--- a/lib/xutils.vala
++++ /dev/null
+@@ -1,113 +0,0 @@
+-/* -*- Mode: Vala; indent-tabs-mode: nil; tab-width: 4 -*-
+- * -*- coding: utf-8 -*-
+- *
+- * Copyright (C) 2011 ~ 2018 Deepin, Inc.
+- * 2011 ~ 2018 Wang Yong
+- *
+- * Author: Wang Yong <wangyong at deepin.com>
+- * Maintainer: Wang Yong <wangyong at deepin.com>
+- *
+- * 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 3 of the License, or
+- * 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/>.
+- */
+-
+-namespace XUtils {
+- public static int _NET_WM_MOVERESIZE_MOVE = 8;
+- public static int _NET_WM_MOVERESIZE_SIZE_BOTTOM = 5;
+- public static int _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6;
+- public static int _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4;
+- public static int _NET_WM_MOVERESIZE_SIZE_LEFT = 7;
+- public static int _NET_WM_MOVERESIZE_SIZE_RIGHT = 3;
+- public static int _NET_WM_MOVERESIZE_SIZE_TOP = 1;
+- public static int _NET_WM_MOVERESIZE_SIZE_TOPLEFT = 0;
+- public static int _NET_WM_MOVERESIZE_SIZE_TOPRIGHT = 2;
+-
+- public void seat_ungrab() {
+- Gdk.Display gdk_display = Gdk.Display.get_default();
+- var seat = gdk_display.get_default_seat();
+- seat.ungrab();
+- }
+-
+- public void move_window(Gtk.Widget widget, int x, int y, int button) {
+- seat_ungrab();
+- send_message((int)((Gdk.X11.Window) widget.get_toplevel().get_window()).get_xid(),
+- (long) x,
+- (long) y,
+- _NET_WM_MOVERESIZE_MOVE,
+- button,
+- 0 // this value must be 0, otherwise moveresize won't work.
+- );
+- }
+-
+- public void resize_window(Gtk.Widget widget, int x, int y, int button, Gdk.CursorType cursor_type) {
+- int? action = cursor_type_to_action(cursor_type);
+- if (action != null) {
+- seat_ungrab();
+- send_message((int)((Gdk.X11.Window) widget.get_toplevel().get_window()).get_xid(),
+- (long) x,
+- (long) y,
+- action,
+- button,
+- 1
+- );
+- }
+- }
+-
+- public int? cursor_type_to_action(Gdk.CursorType cursor_type) {
+- if (cursor_type == Gdk.CursorType.TOP_LEFT_CORNER) {
+- return _NET_WM_MOVERESIZE_SIZE_TOPLEFT;
+- } else if (cursor_type == Gdk.CursorType.TOP_SIDE) {
+- return _NET_WM_MOVERESIZE_SIZE_TOP;
+- } else if (cursor_type == Gdk.CursorType.TOP_RIGHT_CORNER) {
+- return _NET_WM_MOVERESIZE_SIZE_TOPRIGHT;
+- } else if (cursor_type == Gdk.CursorType.RIGHT_SIDE) {
+- return _NET_WM_MOVERESIZE_SIZE_RIGHT;
+- } else if (cursor_type == Gdk.CursorType.BOTTOM_RIGHT_CORNER) {
+- return _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT;
+- } else if (cursor_type == Gdk.CursorType.BOTTOM_SIDE) {
+- return _NET_WM_MOVERESIZE_SIZE_BOTTOM;
+- } else if (cursor_type == Gdk.CursorType.BOTTOM_LEFT_CORNER) {
+- return _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT;
+- } else if (cursor_type == Gdk.CursorType.LEFT_SIDE) {
+- return _NET_WM_MOVERESIZE_SIZE_LEFT;
+- }
+-
+- return null;
+- }
+-
+- public void send_message(int xid, long x, long y, int action, int button, int secret_value) {
+- weak X.Display display = Gdk.X11.get_default_xdisplay();
+- weak X.Window xrootwindow = display.root_window(0);
+-
+- X.Event event = X.Event();
+-
+- event.xclient.type = X.EventType.ClientMessage;
+- event.xclient.message_type = Gdk.X11.get_xatom_by_name("_NET_WM_MOVERESIZE");
+- event.xclient.display = display;
+- event.xclient.window = xid;
+- event.xclient.format = 32;
+- event.xclient.data.l[0] = x;
+- event.xclient.data.l[1] = y;
+- event.xclient.data.l[2] = action;
+- event.xclient.data.l[3] = button;
+- event.xclient.data.l[4] = secret_value;
+-
+- display.send_event(
+- xrootwindow,
+- false,
+- X.EventMask.SubstructureNotifyMask | X.EventMask.SubstructureRedirectMask,
+- ref event);
+-
+- display.flush();
+- }
+-}
+diff --git a/widget/quake_window.vala b/widget/quake_window.vala
+index 3e5a065c..58d2dd33 100644
+--- a/widget/quake_window.vala
++++ b/widget/quake_window.vala
+@@ -24,7 +24,6 @@
+ using Gtk;
+ using Utils;
+ using Widgets;
+-using XUtils;
+
+ namespace Widgets {
+ public class QuakeWindow : Widgets.ConfigWindow {
+@@ -166,10 +165,7 @@ namespace Widgets {
+ e.device.get_position(null, out pointer_x, out pointer_y);
+
+ if (pointer_x != press_x || pointer_y != press_y) {
+- pointer_x *= get_scale_factor();
+- pointer_y *= get_scale_factor();
+- resize_window(this, pointer_x, pointer_y, (int) e.button, Gdk.CursorType.BOTTOM_SIDE);
+-
++ Utils.resize_window(this, e, cursor_type);
+ return false;
+ } else {
+ return true;
+@@ -191,10 +187,7 @@ namespace Widgets {
+ e.device.get_position(null, out pointer_x, out pointer_y);
+
+ if (pointer_x != press_x || pointer_y != press_y) {
+- pointer_x *= get_scale_factor();
+- pointer_y *= get_scale_factor();
+- resize_window(this, pointer_x, pointer_y, (int) e.button, Gdk.CursorType.BOTTOM_SIDE);
+-
++ Utils.resize_window(this, e, cursor_type);
+ return false;
+ } else {
+ return true;
+diff --git a/widget/window.vala b/widget/window.vala
+index 65513860..ad91526a 100644
+--- a/widget/window.vala
++++ b/widget/window.vala
+@@ -3,8 +3,10 @@
+ *
+ * Copyright (C) 2011 ~ 2018 Deepin, Inc.
+ * 2011 ~ 2018 Wang Yong
++ * 2019 ~ 2020 Gary Wang
+ *
+ * Author: Wang Yong <wangyong at deepin.com>
++ * Gary Wang <wzc782970009 at gmail.com>
+ * Maintainer: Wang Yong <wangyong at deepin.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+@@ -26,7 +28,6 @@ using Config;
+ using Gtk;
+ using Utils;
+ using Wnck;
+-using XUtils;
+ using Widgets;
+
+ namespace Widgets {
+@@ -205,9 +206,7 @@ namespace Widgets {
+
+ var cursor_type = get_frame_cursor_type(e.x_root, e.y_root);
+ if (cursor_type != null) {
+- pointer_x *= get_scale_factor();
+- pointer_y *= get_scale_factor();
+- resize_window(this, pointer_x, pointer_y, (int) e.button, cursor_type);
++ Utils.resize_window(this, e, cursor_type);
+ return true;
+ }
+ }
+@@ -223,9 +222,7 @@ namespace Widgets {
+
+ var cursor_type = get_cursor_type(e.x_root, e.y_root);
+ if (cursor_type != null) {
+- pointer_x *= get_scale_factor();
+- pointer_y *= get_scale_factor();
+- resize_window(this, pointer_x, pointer_y, (int) e.button, cursor_type);
++ Utils.resize_window(this, e, cursor_type);
+ return true;
+ }
+ }
+@@ -320,6 +317,11 @@ namespace Widgets {
+ }
+
+ public void update_blur_status(bool force_update=false) {
++ Gdk.Display current_display = get_window().get_display();
++ if ((current_display as Gdk.X11.Display) == null) {
++ return;
++ }
++
+ try {
+ int width, height;
+ get_size(out width, out height);
+diff --git a/widget/window_event_area.vala b/widget/window_event_area.vala
+index 3693cb83..404d85e7 100644
+--- a/widget/window_event_area.vala
++++ b/widget/window_event_area.vala
+@@ -3,8 +3,10 @@
+ *
+ * Copyright (C) 2011 ~ 2018 Deepin, Inc.
+ * 2011 ~ 2018 Wang Yong
++ * 2019 ~ 2020 Gary Wang
+ *
+ * Author: Wang Yong <wangyong at deepin.com>
++ * Gary Wang <wzc782970009 at gmail.com>
+ * Maintainer: Wang Yong <wangyong at deepin.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+@@ -23,7 +25,6 @@
+
+ using Gtk;
+ using Widgets;
+-using XUtils;
+
+ namespace Widgets {
+ public class WindowEventArea : Gtk.EventBox {
+@@ -95,23 +96,22 @@ namespace Widgets {
+ e.device.get_position(null, out press_x, out press_y);
+
+ GLib.Timeout.add(10, () => {
+- // Send 'move_window' event to xserver once find user first do drag.
+- if (is_press) {
+- int pointer_x, pointer_y;
+- e.device.get_position(null, out pointer_x, out pointer_y);
+-
+- if (pointer_x != press_x || pointer_y != press_y) {
+- pointer_x *= get_scale_factor();
+- pointer_y *= get_scale_factor();
+- move_window(this, pointer_x, pointer_y, (int) e.button);
+- return false;
+- } else {
+- return true;
+- }
+- } else {
++ // blumia: should use begin_move_drag instead of send event to X
++ // so it should also works under wayland :)
++ if (is_press) {
++ int pointer_x, pointer_y;
++ e.device.get_position(null, out pointer_x, out pointer_y);
++
++ if (pointer_x != press_x || pointer_y != press_y) {
++ Utils.move_window(this, e);
+ return false;
++ } else {
++ return true;
+ }
+- });
++ } else {
++ return false;
++ }
++ });
+
+
+ var child = get_child_at_pos(drawing_area, (int) e.x, (int) e.y);
diff -Nru deepin-terminal-5.0.0+ds1/debian/patches/series deepin-terminal-5.0.0+ds1/debian/patches/series
--- deepin-terminal-5.0.0+ds1/debian/patches/series 2020-04-24 04:58:09.000000000 +0545
+++ deepin-terminal-5.0.0+ds1/debian/patches/series 2021-05-03 00:46:19.000000000 +0545
@@ -1,3 +1,4 @@
0001-get-rid-of-lintian-warning-desktop-entry-invalid-cat.patch
0002-vala-libify-raw_data-conversion-for-Terminal-feed_ch.patch
0003-utils-adjust-to-change-in-vte3-0.59.0.patch
+0004-basic-wayland-support.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x4B542AF704F74516.asc
Type: application/pgp-keys
Size: 3139 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-deepin-devel/attachments/20210507/db1980af/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-deepin-devel/attachments/20210507/db1980af/attachment-0001.sig>
More information about the Pkg-deepin-devel
mailing list