summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2022-07-04 13:31:25 +0200
committerLiang Qi <liang.qi@qt.io>2022-08-06 01:24:41 +0200
commitaef55501bccd52f63a84228cb2ee201ec4f5c301 (patch)
tree447b4434e082d944de62939af239fde0338fd412
parent8e9fdfec0afc01f192b222af60c13955a63b594f (diff)
tests: replace gtk-embedder.py with a gtk3 app
All linux CI machines have gtk3 installed. And Python GTK things are too complicate to setup. Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I3c0d967f61aebea508784df79569b9d0064f66e2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
-rw-r--r--tests/manual/CMakeLists.txt5
-rw-r--r--tests/manual/manual.pro4
-rwxr-xr-xtests/manual/xembed-raster/gtk-embedder.py36
-rwxr-xr-xtests/manual/xembed-widgets/gtk-embedder.py39
-rw-r--r--tests/manual/xembed/CMakeLists.txt7
-rw-r--r--tests/manual/xembed/gtk-container/CMakeLists.txt27
-rw-r--r--tests/manual/xembed/gtk-container/gtk-container.cpp43
-rw-r--r--tests/manual/xembed/gtk-container/gtk-container.pro16
-rw-r--r--tests/manual/xembed/qt-client-raster/CMakeLists.txt (renamed from tests/manual/xembed-raster/CMakeLists.txt)8
-rw-r--r--tests/manual/xembed/qt-client-raster/main.cpp (renamed from tests/manual/xembed-raster/main.cpp)0
-rw-r--r--tests/manual/xembed/qt-client-raster/qt-client-raster.pro (renamed from tests/manual/xembed-raster/xembed-raster.pro)2
-rw-r--r--tests/manual/xembed/qt-client-raster/rasterwindow.cpp (renamed from tests/manual/xembed-raster/rasterwindow.cpp)0
-rw-r--r--tests/manual/xembed/qt-client-raster/rasterwindow.h (renamed from tests/manual/xembed-raster/rasterwindow.h)6
-rw-r--r--tests/manual/xembed/qt-client-widget/CMakeLists.txt (renamed from tests/manual/xembed-widgets/CMakeLists.txt)8
-rw-r--r--tests/manual/xembed/qt-client-widget/main.cpp (renamed from tests/manual/xembed-widgets/main.cpp)0
-rw-r--r--tests/manual/xembed/qt-client-widget/qt-client-widget.pro (renamed from tests/manual/xembed-widgets/xembed-widgets.pro)2
-rw-r--r--tests/manual/xembed/qt-client-widget/window.cpp (renamed from tests/manual/xembed-widgets/window.cpp)0
-rw-r--r--tests/manual/xembed/qt-client-widget/window.h (renamed from tests/manual/xembed-widgets/window.h)0
-rw-r--r--tests/manual/xembed/xembed.pro11
19 files changed, 122 insertions, 92 deletions
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index c787bd2aea..bd87152c49 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -61,8 +61,9 @@ add_subdirectory(windowflags)
add_subdirectory(windowgeometry)
add_subdirectory(windowmodality)
add_subdirectory(widgetgrab)
-add_subdirectory(xembed-raster)
-add_subdirectory(xembed-widgets)
+if(QT_FEATURE_xcb)
+ add_subdirectory(xembed)
+endif()
add_subdirectory(shortcuts)
add_subdirectory(dialogs)
add_subdirectory(windowtransparency)
diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro
index 8ad5882234..8bbc8af899 100644
--- a/tests/manual/manual.pro
+++ b/tests/manual/manual.pro
@@ -47,8 +47,6 @@ windowflags \
windowgeometry \
windowmodality \
widgetgrab \
-xembed-raster \
-xembed-widgets \
shortcuts \
dialogs \
windowtransparency \
@@ -66,3 +64,5 @@ qtConfig(opengl) {
win32: SUBDIRS -= network_remote_stresstest network_stresstest
qtConfig(vulkan): SUBDIRS += qvulkaninstance
+
+qtConfig(xcb): SUBDIRS += xembed
diff --git a/tests/manual/xembed-raster/gtk-embedder.py b/tests/manual/xembed-raster/gtk-embedder.py
deleted file mode 100755
index 4c1ce6fbdd..0000000000
--- a/tests/manual/xembed-raster/gtk-embedder.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2013 Canonical Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-from gi.repository import Gtk
-from subprocess import Popen
-
-window = Gtk.Window()
-
-box = Gtk.VBox(False, 0)
-window.add(box)
-
-child = None
-def on_button_clicked(button, socket):
- global child
- child = Popen(['./rasterwindow', str(socket.get_id())])
-
-button = Gtk.Button("Press me to embed a Qt client")
-box.pack_start(button, False, False, 0)
-
-socket = Gtk.Socket()
-socket.set_size_request(200, 200)
-box.add(socket)
-
-button.connect("clicked", on_button_clicked, socket)
-window.connect("destroy", Gtk.main_quit)
-
-def plugged_event(widget):
- print("A window was embedded!")
-
-socket.connect("plug-added", plugged_event)
-
-window.show_all()
-Gtk.main()
-if child:
- child.terminate()
diff --git a/tests/manual/xembed-widgets/gtk-embedder.py b/tests/manual/xembed-widgets/gtk-embedder.py
deleted file mode 100755
index b3b7b8c433..0000000000
--- a/tests/manual/xembed-widgets/gtk-embedder.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2013 Canonical Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-from gi.repository import Gtk
-from subprocess import Popen
-
-window = Gtk.Window()
-
-box = Gtk.VBox(False, 0)
-window.add(box)
-
-child = None
-def on_button_clicked(button, socket):
- global child
- child = Popen(['./lineedits', str(socket.get_id())])
-
-button = Gtk.Button("Press me to embed a Qt client")
-box.pack_start(button, False, False, 0)
-
-entry = Gtk.Entry()
-box.pack_start(entry, False, False, 0)
-
-socket = Gtk.Socket()
-socket.set_size_request(200, 200)
-box.add(socket)
-
-button.connect("clicked", on_button_clicked, socket)
-window.connect("destroy", Gtk.main_quit)
-
-def plugged_event(widget):
- print("A window was embedded!")
-
-socket.connect("plug-added", plugged_event)
-
-window.show_all()
-Gtk.main()
-if child:
- child.terminate()
diff --git a/tests/manual/xembed/CMakeLists.txt b/tests/manual/xembed/CMakeLists.txt
new file mode 100644
index 0000000000..9137e1b940
--- /dev/null
+++ b/tests/manual/xembed/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from xembed.pro.
+
+if(QT_FEATURE_gtk3)
+ add_subdirectory(gtk-container)
+endif()
+add_subdirectory(qt-client-raster)
+add_subdirectory(qt-client-widget)
diff --git a/tests/manual/xembed/gtk-container/CMakeLists.txt b/tests/manual/xembed/gtk-container/CMakeLists.txt
new file mode 100644
index 0000000000..87694d0fb5
--- /dev/null
+++ b/tests/manual/xembed/gtk-container/CMakeLists.txt
@@ -0,0 +1,27 @@
+# Generated from gtk-container.pro.
+
+qt_find_package(GTK3) # special case
+qt_find_package(X11) # special case
+
+#####################################################################
+## gtk-container Binary:
+#####################################################################
+
+qt_internal_add_manual_test(gtk-container
+ GUI
+ SOURCES
+ gtk-container.cpp
+ DEFINES
+ GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6
+ LIBRARIES # special case
+ PkgConfig::GTK3
+ Qt::Core
+ Qt::CorePrivate
+ Qt::Gui
+ Qt::GuiPrivate
+ X11::X11 # special case
+)
+
+#### Keys ignored in scope 1:.:.:qt-client-widget.pro:<TRUE>:
+# TEMPLATE = "app"
+
diff --git a/tests/manual/xembed/gtk-container/gtk-container.cpp b/tests/manual/xembed/gtk-container/gtk-container.cpp
new file mode 100644
index 0000000000..41d88e8d51
--- /dev/null
+++ b/tests/manual/xembed/gtk-container/gtk-container.cpp
@@ -0,0 +1,43 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include <gtk/gtk.h>
+#include <gtk/gtkx.h>
+
+gchar *cmd;
+
+void launch_app(GtkButton */* btn */, guint32 *id)
+{
+ gchar *command = g_strdup_printf("%s %u", cmd, *id);
+ g_spawn_command_line_async(command, NULL);
+}
+
+gint main(gint argc, gchar **argv)
+{
+ if (argc <=1 || argc > 2) {
+ g_print("No client application defined.\n");
+ return 0;
+ }
+
+ cmd = g_strdup_printf("%s", argv[1]);
+
+ gtk_init(&argc, &argv);
+
+ GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+ GtkWidget *sock = gtk_socket_new();
+ GtkWidget *btn = gtk_button_new_with_label("Hello, World!");
+ g_signal_connect(sock, "plug-removed", gtk_main_quit, NULL);
+ g_signal_connect(win, "delete-event", gtk_main_quit, NULL);
+ gtk_widget_set_size_request(sock, 200, 200);
+ gtk_box_pack_start(GTK_BOX(vbox), btn, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), sock, TRUE, TRUE, 0);
+ gtk_container_add(GTK_CONTAINER(win), vbox);
+ gtk_widget_show_all(win);
+
+ guint32 id = gtk_socket_get_id(GTK_SOCKET(sock));
+ g_signal_connect(btn, "clicked", G_CALLBACK(launch_app), &id);
+
+ gtk_main();
+ return 0;
+}
diff --git a/tests/manual/xembed/gtk-container/gtk-container.pro b/tests/manual/xembed/gtk-container/gtk-container.pro
new file mode 100644
index 0000000000..5b4b826315
--- /dev/null
+++ b/tests/manual/xembed/gtk-container/gtk-container.pro
@@ -0,0 +1,16 @@
+TEMPLATE = app
+TARGET = gtk-container
+QT_FOR_CONFIG += widgets-private
+INCLUDEPATH += .
+CONFIG += X11
+QMAKE_USE += gtk3
+
+# You can make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# Please consult the documentation of the deprecated API in order to know
+# how to port your code away from it.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+# Input
+SOURCES += gtk-container.cpp
diff --git a/tests/manual/xembed-raster/CMakeLists.txt b/tests/manual/xembed/qt-client-raster/CMakeLists.txt
index fe7d1c4bfd..b874d38a83 100644
--- a/tests/manual/xembed-raster/CMakeLists.txt
+++ b/tests/manual/xembed/qt-client-raster/CMakeLists.txt
@@ -1,13 +1,13 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-# Generated from xembed-raster.pro.
+# Generated from qt-client-raster.pro.
#####################################################################
-## tst_manual_rasterwindow Binary:
+## qt-client-raster Binary:
#####################################################################
-qt_internal_add_manual_test(tst_manual_rasterwindow
+qt_internal_add_manual_test(qt-client-raster
GUI
SOURCES
main.cpp
@@ -16,5 +16,5 @@ qt_internal_add_manual_test(tst_manual_rasterwindow
Qt::Gui
)
-#### Keys ignored in scope 1:.:.:xembed-raster.pro:<TRUE>:
+#### Keys ignored in scope 1:.:.:qt-client-raster.pro:<TRUE>:
# TEMPLATE = "app"
diff --git a/tests/manual/xembed-raster/main.cpp b/tests/manual/xembed/qt-client-raster/main.cpp
index 447578fcc2..447578fcc2 100644
--- a/tests/manual/xembed-raster/main.cpp
+++ b/tests/manual/xembed/qt-client-raster/main.cpp
diff --git a/tests/manual/xembed-raster/xembed-raster.pro b/tests/manual/xembed/qt-client-raster/qt-client-raster.pro
index 4c9fee07b8..9a47ed41c2 100644
--- a/tests/manual/xembed-raster/xembed-raster.pro
+++ b/tests/manual/xembed/qt-client-raster/qt-client-raster.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-TARGET= tst_manual_rasterwindow
+TARGET= qt-client-raster
QT += gui
SOURCES += \
diff --git a/tests/manual/xembed-raster/rasterwindow.cpp b/tests/manual/xembed/qt-client-raster/rasterwindow.cpp
index 9cf2db737c..9cf2db737c 100644
--- a/tests/manual/xembed-raster/rasterwindow.cpp
+++ b/tests/manual/xembed/qt-client-raster/rasterwindow.cpp
diff --git a/tests/manual/xembed-raster/rasterwindow.h b/tests/manual/xembed/qt-client-raster/rasterwindow.h
index b508471a69..251237dc0b 100644
--- a/tests/manual/xembed-raster/rasterwindow.h
+++ b/tests/manual/xembed/qt-client-raster/rasterwindow.h
@@ -19,10 +19,10 @@ public slots:
void renderNow();
protected:
- bool event(QEvent *event);
+ bool event(QEvent *event) override;
- void resizeEvent(QResizeEvent *event);
- void exposeEvent(QExposeEvent *event);
+ void resizeEvent(QResizeEvent *event) override;
+ void exposeEvent(QExposeEvent *event) override;
private:
QBackingStore *m_backingStore;
diff --git a/tests/manual/xembed-widgets/CMakeLists.txt b/tests/manual/xembed/qt-client-widget/CMakeLists.txt
index d45682316b..056d0353f0 100644
--- a/tests/manual/xembed-widgets/CMakeLists.txt
+++ b/tests/manual/xembed/qt-client-widget/CMakeLists.txt
@@ -1,13 +1,13 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-# Generated from xembed-widgets.pro.
+# Generated from qt-client-widget.pro.
#####################################################################
-## tst_manual_lineedits Binary:
+## qt-client-widget Binary:
#####################################################################
-qt_internal_add_manual_test(tst_manual_lineedits
+qt_internal_add_manual_test(qt-client-widget
GUI
SOURCES
main.cpp
@@ -17,5 +17,5 @@ qt_internal_add_manual_test(tst_manual_lineedits
Qt::Widgets
)
-#### Keys ignored in scope 1:.:.:xembed-widgets.pro:<TRUE>:
+#### Keys ignored in scope 1:.:.:qt-client-widget.pro:<TRUE>:
# TEMPLATE = "app"
diff --git a/tests/manual/xembed-widgets/main.cpp b/tests/manual/xembed/qt-client-widget/main.cpp
index 59b1a76c6a..59b1a76c6a 100644
--- a/tests/manual/xembed-widgets/main.cpp
+++ b/tests/manual/xembed/qt-client-widget/main.cpp
diff --git a/tests/manual/xembed-widgets/xembed-widgets.pro b/tests/manual/xembed/qt-client-widget/qt-client-widget.pro
index 28d13d5b61..3dfe2c9ab1 100644
--- a/tests/manual/xembed-widgets/xembed-widgets.pro
+++ b/tests/manual/xembed/qt-client-widget/qt-client-widget.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-TARGET= tst_manual_lineedits
+TARGET= qt-client-widget
QT += widgets
SOURCES += \
diff --git a/tests/manual/xembed-widgets/window.cpp b/tests/manual/xembed/qt-client-widget/window.cpp
index d485c92b14..d485c92b14 100644
--- a/tests/manual/xembed-widgets/window.cpp
+++ b/tests/manual/xembed/qt-client-widget/window.cpp
diff --git a/tests/manual/xembed-widgets/window.h b/tests/manual/xembed/qt-client-widget/window.h
index 6f69a4330e..6f69a4330e 100644
--- a/tests/manual/xembed-widgets/window.h
+++ b/tests/manual/xembed/qt-client-widget/window.h
diff --git a/tests/manual/xembed/xembed.pro b/tests/manual/xembed/xembed.pro
new file mode 100644
index 0000000000..14a4ddea44
--- /dev/null
+++ b/tests/manual/xembed/xembed.pro
@@ -0,0 +1,11 @@
+TEMPLATE=subdirs
+QT_FOR_CONFIG += network-private gui-private
+
+TEMPLATE = subdirs
+QT_FOR_CONFIG += widgets-private
+
+SUBDIRS = \
+qt-client-raster \
+qt-client-widget
+
+qtHaveModule(widgets):qtConfig(gtk3): SUBDIRS += gtk-container