diff options
author | Liang Qi <liang.qi@qt.io> | 2022-07-04 13:31:25 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2022-08-06 01:24:41 +0200 |
commit | aef55501bccd52f63a84228cb2ee201ec4f5c301 (patch) | |
tree | 447b4434e082d944de62939af239fde0338fd412 | |
parent | 8e9fdfec0afc01f192b222af60c13955a63b594f (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>
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 |