summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* QComboBox: add QT_DEPRECATED_X() for deprecated functionsChristian Ehrlicher2019-05-092-2/+5
| | | | | | | | | QT_DEPRECATED_X() was not added with d6d33f0b80dd85043c71f71a3ed5485d6014e6c4 for the deprecated QComboBox functions - Add them now. Change-Id: I8d4ea08766ae6ff052dfccac6c3f35ecf34affb7 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Revert "macOS: disable threaded OpenGL (unconditionally)"Eskil Abrahamsen Blomfeldt2019-05-141-7/+5
| | | | | | | | | | | | | | | | | This reverts commit fc3e8514144535db22c431251bc0feea99cf72e2. The patch introduces a crash in Qt Quick in the test tst_QQuickWindow::multipleWindows() on macOS 10.12. Reverting this will cause dead locks on older macOS versions for users who opt in to using layer backed mode, so we should bring this back as soon as a fix can be found for the crash. But in order to proceed with qt5.git integration, we revert it for now. Task-number: QTBUG-75782 Change-Id: I57f6b2918c3fc4b4e58a8c39b24a19e2d796a4f4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QOpenGLWindow: set QOffScreenSurface screenMorten Johan Sørvig2019-05-141-1/+1
| | | | | | | | Required by QWasmOpenGLContext. Task-number: QTBUG-75463 Change-Id: Ie3cb80b50d7c909e6f46a6dec19644bf27cd41e7 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: rewrite/simplify OpenglContextMorten Johan Sørvig2019-05-142-35/+30
| | | | | | | | | | | | | | | | | | We don’t need the contextLost callback since we can poll for the “lost” status in isValid() Recreating the native context is not very helpful, since it destroys all current context state. Remove this logic. Support makeCurrent() on different surfaces, as long as they refer to the same screen. Create the native context (and record which screen) on the first call to makeCurrent() Task-number: QTBUG-75463 Change-Id: I6eb830df14578ffdbed5b0505fe860ce433e4f9b Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: controlled screen destructionMorten Johan Sørvig2019-05-149-3/+51
| | | | | | | | | | | | | Freeing OpenGL resources requires a current context, which (on wasm) requires a screen. Add a destroy() functions to QWasmScreen, QWasmCompositor, QWasmWindow, and QWasmBackingStore which facilitates OpenGL cleanup before we start deleting screen objects. Task-number: QTBUG-75463 Change-Id: I9954b536416b9147965c74459ccad838d1578778 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: add QWasmOffscreenSurfaceMorten Johan Sørvig2019-05-145-2/+101
| | | | | | | | | | | | | | This no-op implementation is sufficient to support OpenGL cleanup use cases, where the OpenGL context needs to be made current at times where we don't have a window available. A specific requirement on WebAssembly is that the context is tied to one specific screen; which is an extra requirement on QWasmOffscreenSurface, compared to the other platforms. Task-number: QTBUG-75463 Change-Id: Ie3658cb235bf342be66f19dfe981e3a56a90e1b6 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: use correct coordinates when blittingMorten Johan Sørvig2019-05-141-2/+3
| | | | | | | | | The target position is the position on the canvas, not the global position on the page. Task-number: QTBUG-75463 Change-Id: I4ea2c9afacd2065fa975f6fa2e6a93d98f637854 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: prevent crash on null backingstore pointerMorten Johan Sørvig2019-05-141-0/+2
| | | | | | | | | We can get draw calls in between creating the platform window and the platform backing store. Task-number: QTBUG-75463 Change-Id: If0b67d40fac84e466f204ec23a267aa4c6121cbd Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: install one browser window resize handlerMorten Johan Sørvig2019-05-144-20/+23
| | | | | | | | | | Install one browser window resize handler instead of per-canvas resize handlers, which avoids having to uninstall on QScreen destruction. Task-number: QTBUG-75463 Change-Id: I8345262a906ed735f8e9e146f1e963f515cf0d25 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* macOS: disable threaded OpenGL (unconditionally)Morten Johan Sørvig2019-05-081-5/+7
| | | | | | | | | | | We can’t determine when the app will use layer-backed views without having access to the QWindow and NSView instance, so make the conservative choice of always returning false for ThreadedOpenGL. Task-number: QTBUG-74820 Change-Id: If2779b17eead78ce1929ccebc3bd8fc0eb00c4b5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: make idealThreadCount() work on all threadsMorten Johan Sørvig2019-05-083-5/+13
| | | | | | | | | navigator.hardwareConcurrency can be accessed from the main thread only. Read and cache the value on QCoreApplication initialization. Change-Id: I731f7f356ce106c7107977783d4b763326af06b6 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: remove qDebugMorten Johan Sørvig2019-05-071-2/+0
| | | | | Change-Id: Ic9812421b2a79a33bb138f448fe132dab141b724 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Merge 5.13 into 5.13.0Frederik Gladhorn2019-05-07104-4789/+7857
|\ | | | | | | Change-Id: I98e2b93d78dba1cbf746c39a0b5877d5e72c91fc
| * wasm: add fixedPitch fontLorn Potter2019-05-078-5/+28
| | | | | | | | | | | | | | | | Also define our default font so as to return something we actually have Task-number: QTBUG-75587 Change-Id: I26e3c62921d369c3017af9796c0a20f7ac06d07c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * xcb: make beep workKarim Pinter2019-05-061-0/+1
| | | | | | | | | | | | | | | | | | Adding xcb_flush after xcb_bell makes it work, no need to move the mouse. Fixes: QTBUG-75617 Change-Id: Ieeb47468bf31cfa6fcf2d48da56d54b9e6eac6fe Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * wasm: fix passing environmental variablesLorn Potter2019-05-061-1/+1
| | | | | | | | | | | | Task-number: QTBUG-75530 Change-Id: Ic0f0bd8ce863f55d737d96bbf9e5473466381c9b Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-0613-18/+87
| |\ | | | | | | | | | Change-Id: Iaad9509712c848ed42ada2c25065162a6fc5a930
| | * Fix dnd regression c427ba53aa0ee1a71aa670783f65bcfd230da653Mikhail Svetkin2019-05-051-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt starts drag-and-drop on a mouse button press event. Cococa in this case won't send the matching release event, so we have to synthesize it here. Task-number: QTBUG-72417 Change-Id: I645b6a2733c1ea11ac4545cf3405f826af45fa47 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| | * fix crash when using ALDI usb-stick with broken filesystemNick Shaforostov2019-05-051-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I was using a cheap usb-stick from ALDI supermarket with fat32, and my application crashed because filesystem was empty. Unrealistic scenario, but still just returning here false is better than a crash Change-Id: I8979d5a4e19ce57770ab03983e847b272ebf7019 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * fix compilation with various -no-feature-* optionsNick Shaforostov2019-05-057-5/+18
| | | | | | | | | | | | | | | Change-Id: Ic1975db497613e3efe50be4246c167efe10d8e31 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | * Only call addFontToDatabase once per family,styleAllan Sandfeld Jensen2019-05-032-6/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We get a call to storeFont for each supported script-type of a font, but we use the font signature to register all the supported types at once, and can thus save ~3/4 calls to addFontToDatabase. Change-Id: I9d06252fb7f805e7babac58d82fa412ec4e0e36a Fixes: QTBUG-59360 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| | * configure: skip Freetype/Fontconfig autodetection only on MSVCMassimo Callegari2019-05-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Windows there are package-based systems like MSYS2 that provide pkg-config for packages lookup. This change skips autodetection only for MSVC which doesn't provide the aforementioned feature. Task-number: QTBUG-57436 Change-Id: Iaed517e93031adbd2fd9dbf350764f76569b94ea Reviewed-by: Kai Koehne <kai.koehne@qt.io>
| | * Android: Fix deleting of new lines when using backspaceAndy Shaw2019-05-031-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With some keyboards (ASOP, SwiftKey) it was not deleting any new lines when using backspace. So this ensures that it is correctly deleting at these points. Tested with the Samsung, Gboard and SwiftKey keyboards. Fixes: QTBUG-74824 Fixes: QTBUG-57798 Change-Id: Id2e4f96c18c3fec0e7f444b55dd3db2653625fd0 Done-with: Vova Mshanetskiy <vovams163@gmail.com> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * | QtCore: compile with QT_DISABLE_DEPRECATED_BEFORE=0x050d00Christian Ehrlicher2019-05-033-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Don't call or implement functions which are not available when compiling with QT_DISABLE_DEPRECATED_BEFORE=0x050d00 Change-Id: I949b12bba880c516391f312f58c8748303a1790d Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into ↵Liang Qi2019-05-0346-4550/+7463
| |\ \ | | | | | | | | | | | | refs/staging/5.13
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-0346-4550/+7463
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/pcre2/qt_attribution.json Change-Id: Ibae941cb12662f27bd6962ee02bc235971c59a15
| | | * HTTP2: Fix handling of GOAWAY framesChristian Kamm2019-05-031-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously there were two issues: - A QNetworkReply could be aborted but be in NoError state. (GOAWAY frame with 0 as error) - Streams in a connection would be aborted prematurely when a GOAWAY frame with a lastStreamId of 2^31-1 was received. Fixes: QTBUG-73947 Change-Id: Iddee9385c1db3cc4bb80e07efac7220fff787bf3 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| | | * Cocoa: Get the right zero digit for the localeAndy Shaw2019-05-021-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ic23e541e1b12b3c94f8d191cb8fb0f76086b69a5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | | * QSharedPointer: fix docs for create()Giuseppe D'Angelo2019-05-022-27/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 5.12 only the variadic argument version is left (as all supported compilers have variadic templates). Remove the docs of the nullary overload, and fix the docs for the remaining overload. Change-Id: I54cc7ea71cc61ba1330a9ad92e4fa2ae7f749bac Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | | * Android: Copy extra libs in aux modeBogDan Vatra2019-05-021-0/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: Ibbdd6b9c23c094923bc60a8a013f3ac356444510 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| | | * Reduce amount of tracepoints required for event trackingMilian Wolff2019-05-024-29/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Encode the consumed/filtered state in the _exit tracepoint and remove the separate tracking of receiver event handling. Combined, this reduces the size of the trace file. Change-Id: Icb3cb2dd47798543905cea450046d6fad559a15b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | | * Upgrade PCRE2 to 10.33Giuseppe D'Angelo2019-05-0235-4462/+7208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Adjust also the attribution file. Change-Id: I27bdbcf07bdca51bb5ae169ca50dd63502f5468f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | | * Only generate temporaries when it makes sensePaul Lemire2019-05-022-30/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Never for global inputs - Otherwise only if the temporary is referenced more than once -> meaning it's actually caching the result of some operation Tests updated accordingly. Change-Id: Ic76615370d23dee3965ca6350d5257a8be5a3e22 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | | androiddeployqt: print qmlimportscanner command in verbose modeMitch Curtis2019-05-031-0/+5
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | This helps debugging import issues, and will produce output like this: Running qmlimportscanner with the following command: /media/dev2/qt5.13-android-x86-debug/qtbase/bin/qmlimportscanner -rootPath /media/dev2/qt5.13/qtquickcontrols2/tests/auto/customization/ -importPath /media/dev2/qt5.13-android-x86-debug/qtbase/qml /media/dev2/qt5.13/qtquickcontrols2/tests/auto/customization/ Task-number: QTBUG-73572 Change-Id: I3c8fe16cb76f1b11913a3b9cc98470f6071438ab Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | wasm: use requestActive instead of activateLorn Potter2019-05-021-5/+2
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-74868 Change-Id: Ibbbac1ece66c8978440a282bf6949a82fb64d216 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-0226-206/+223
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qobject.cpp Change-Id: I8ca1163a1fa8072dcd16ea4426c58219149599fd
| | * Use QPlatformTheme::TouchDoubleTapDistance for touch eventsAlexander Volkov2019-05-012-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and update the cached values on theme change. Modify tst_QWidget::touchEventSynthesizedMouseEvent() to avoid unexpected double click detection. Change-Id: I151c47e851ebba7550b1b09caca2781c28d7d3d9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Android: Fix positioning of text editor context menuVova Mshanetskiy2019-05-012-18/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code in QtActivityDelegate.updateHandles() and EditPopupMenu.setPosition() could use size of EditPopupMenu.m_view to calculate position of context menu before that size was calculated during an asynchronous layout pass. In particular m_view reports size 0x0 when context menu is opened for the first time after start of the application. In this case the context menu was displayed on top of the text editor instead of being displayed above it. This patch fixes that problem by moving all positioning code from QtActivityDelegate.updateHandles() to EditPopupMenu.setPosition() and adding an OnLayoutChangeListener which calls setPosition() again each time the size of m_view changes, including when it changes for the first time from 0x0 to a real value. Change-Id: I670fef811a4dcba5524f7520ea41a47978dd10f1 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
| | * Android: Fix positioning of selection handles in text editorsVova Mshanetskiy2019-05-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code used size of m_cursorView to calculate position of the cursor handle popup. But since on Android layout process is asynchronous, both width and height of m_cursorView was 0 upon first call to setPosition(). This resulted in selection handles being initially displayed at a wrong position for a fraction of second and then quickly moving to the correct position. In some cases handles stayed at the wrong position until touched by user. This patch replaces use of m_cursorView's size with use of m_popup's size. Width and height of m_popup may be used immediately because they are explicitly assigned in initOverlay(). The size of m_popup should be always equal to the would-be size of m_cursorView because of how it is calculated. Change-Id: I9868c9a5ce0103d8328b2478cf82feaceba7f404 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
| | * Don't pass scope args to _exit trace pointsMilian Wolff2019-04-304-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we trace a scope, then we pass the scope args to the _entry trace point. There is no need to do that also for the _exit trace points, it just blows up the trace data for no obvious gain. Any decent tracing consumer can easily find the args for the _exit call by matching it to its _entry call. Note that this is standard practice in trace points, and also done like this in the Linux Kernel trace points for example. Change-Id: I273293b0c7e799767acc1960b50ab675fc765a36 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Refactor QMetaObject::activate tracepointsMilian Wolff2019-04-302-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use Q_TRACE_SCOPE and the corresponding naming scheme. Additionally, don't change the behavior of the code when tracing is enabled, i.e. continue to return early if possible. Change-Id: I9ba9679869db1541a19bc832beede902224c52f2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Update bundled libpng to version 1.6.37Eirik Aavitsland2019-04-2916-145/+133
| | | | | | | | | | | | | | | | | | | | | | | | | | | The remaining diff to clean 1.6.37 is archived in the qtpatches.diff file. [ChangeLog][Third-Party Code] libpng was updated to version 1.6.37 Change-Id: I589bff09beec1977be8c6ca2a60aadf05f337f38 Reviewed-by: Liang Qi <liang.qi@qt.io>
| | * Improve QObject::moveToThread docMiłosz Kosobucki2019-04-281-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change mentions of parameter value being "zero" to nullptr. Clarify that when nullptr is passed to moveToThread() event processing is stopped because the object is no longer associated with any thread. Also, reitarete this fact in the paragraph about processing of new events. There's an exception to the rule that QObjects cannot be "pulled" by moveToThread that is buried in the implementation and not mentioned in the doc. This information is worth noting explicitly. Change-Id: I816ff737c48d8057b39e36b566079710aeb8e690 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * | Fix -Wdeprecated-copy warningsAllan Sandfeld Jensen2019-05-018-6/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implicit copy constructors or methods are considered deprecated for classes that has one of the two or a destructor. The warning is enabled with -Wextra in gcc 9 Change-Id: Ic9be654f2a142fb186a4d5a7d6b4f7d6f4e611d8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Don't duplicate font family names in the fallback listAndy Shaw2019-05-071-1/+2
|/ / | | | | | | | | | | Fixes: QTBUG-75333 Change-Id: Iaaf4b13d50c6b9b52e629b81d5e9cbc552a0202c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-04-289-31/+38
|\| | | | | | | Change-Id: Ibce9bfef928ce39070183c488ce86ae32e5ea705
| * Fix QOpenGLDebugLogger crash on ANGLEAlvin Wong2019-04-271-1/+1
| | | | | | | | | | | | | | | | | | | | The helper in QOpenGLDebugLogger did not account for the extra "KHR" suffix in the function names and results in a crash when ANGLE is being used. This commit fixes this issue. Change-Id: I439d8bfc53b010be5410286b86c090aff171aaef Fixes: QTBUG-62070 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| * Windows QPA: Fix blank Cursor on secondary displaySimeon Kuran2019-04-271-10/+12
| | | | | | | | | | | | | | | | | | CreateCursor only works with standard sizes (32, ...) depending on the display hardware. No longer apply the scale factor for the blank cursor, because it might lead to unsupported cursor sizes resulting in random pixels. Change-Id: I48d84bd913d2dd8f62129126c9a41e58ee2cbcae Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Fix determination of OpenGL include paths on macOS, take 3Joerg Bornemann2019-04-272-12/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The sysrootification of QMAKE_INCDIR_OPENGL on macOS must happen only once. Commit 49ef3773 addressed this but stored the sysrootified QMAKE_INCDIR_OPENGL in qt_lib_gui_private.pri. For installer packages, these paths are the paths of the build machine and most likely wrong on the user's machine. This reverts commit 4949ef377349ba4dae840c2d5caa36e2d516707baa and restores the sysrootification in sdk.prf. The original include paths are assigned to QMAKE_EXPORT_INCDIR_OPENGL and stored as QMAKE_INCDIR_OPENGL in qt_lib_gui_private.pri. Fixes: QTBUG-75374 Task-number: QTBUG-73736 Change-Id: I4c0f65866d60660c632363dba3adc7ea2e344bfc Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Make QFile::copy() less likely to create zero-sizedThiago Macieira2019-04-271-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QFile::copy() didn't have the syncToDisk() call that QSaveFile::commit() has. So add it. [ChangeLog][QtCore][QFile] Made QFile::copy() issue a filesystem- synchronization system call, which would make it less likely to result in incomplete or corrupt files if the system reboots or uncleanly shuts down soon after the function returns. New code is advised to use QSaveFile instead, which also allows to display a progress report while copying. Fixes: QTBUG-75407 Change-Id: I95ecabe2f50e450c991afffd1598d09ec73f6482 Reviewed-by: Henrik Hartz <hhartz@gmail.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>