com.diffplug.common.swt.SwtKtwhich is required to instantiatePointorRectanglein Kotlin starting with Eclipse 4.36 (#33 responding to swt#1711)
- The 32-bit
x86ports have been removed. (#36)
MacDeepLinkclass and dylibs for supporting deep links on modern versions of macOS.
- Add
META-INF/servicesmetadata to support Kotlin coroutinesDispatchers.Main.
- Downgrade from Kotlin
2.1.0to2.0.21
- BREAKING
SwtMisc.systemFontWidthnow returnsdoubleinstead ofint.- added new methods
systemFontWidthTimes(int)andsystemFontWidthTimes(String)to make this easier to deal with
- added new methods
- BREAKING remove RxJava completely in favor of Kotlin Flow.
- Bump required java from 11 to 17.
- Convert
ControlWrapperandShellsto kotlin for better nullability. (#27)
OS.detectPlatformcan now take aFunction<List<String>, String>which lets you control process execution when detecting the OS. (#26)
- Remove more errant platform-specfic SWT artifacts. (#25)
- Remove the errant platform-specific SWT artifact which was added as a transitive dependency in the pom of
durian-swt:4.2.0. (#23)
- When
OS.getNativeorgetRunningis called on an OS which is unsupported by SWT, instead of throwing an exception, we now returnArch.unknown. You can't get platform-specific artifacts for it, but if you don't need them then you get to keep running instead of dying. (#21)
SiliconFix.APPLY_FIXis now mutable, which was the intention in4.1.0.
SiliconFixnow has apublic static boolean APPLY_FIXfield which users can set. The initial value isOS.getRunning().isMac() && Arch.getRunning() == Arch.arm64, but we have found that users might need to set a different value depending on how SWT is launched.
SwtExeccan now plays nicely with Kotlin coroutines.CoatMux.Layernow exposes its rootControlinstance (#12).VScrollCtlandVScrollBubblefor easier VScroll handling (#10).
- BREAKING
SwtRxis now based on Kotlin Flow rather than RxJava.
- BREAKING Removed
ColorPool.getSystemColor()(#8). - BREAKING Switched type arguments of
TypedDataField(#3). - BREAKING Removed OSGi metadata.
- Oops, we weren't publishing the
aarch64binaries, fixed now. (#18)
- On Mac Apple Silicon (but not x86_64), SWT Tables and Trees now have giant fat rows (bugzilla). (#17)
- But if you call
setFont(null)on them, then they have rows the same size as before. - We created a new class
SiliconFixthat does nothing on all platforms except Apple Silicon where it callssetFont(null). - Wherever a
TableorTreeinstantiated (SmoothTableandColumnFormat), we useSiliconFix. - This workaround is perfectly effective as of
4.21and4.22, it may become obsolete in a future release.
- But if you call
- Added
OS.detectPlatform(Function<String, String> systemProperty, Function<String, String> environmentVariable)
- Mac tables with a checkbox column now size the rest of their columns correctly. (#14)
- Support for Apple Silicon in the
OS,Arch, andSwtPlatformclasses. (#13) - Added
DropTargetEventsupport toSwtDebug. - Added
LinkBtn.create.
- Improved javadoc publishing (though SWT is still broken)
- Added
FlatBtn.setBackgroundandFlatBtn.setSelection. - Added
Shells.dontSetPositionOrSizeandShells.setCloseOnEscape. - Shells now reposition themselves if they were going to open offscreen.
- Shells no longer set their image on Mac, so that they don't hijack the dock icon.
- Added
ControlWrapper.transparentfor efficiently passingControltoControlWrapper. - Added
ControlWrapper.setParentwhich is a pure delegation toControl.setParent. - Improved
StructuredDrop.handler. - Added
SwtMisc.globalBoundsforControlWrapper. SwtDebug.dumpEventis now null-safe.
- Added a non-coat version of
RadioGroup. - Fixed
Shells.openOnActive()to take advantage ofShells.active().
Fonts.systemLarge()was hardcoded to 12 points. This worked well on standard DPI windows, but was actually smaller than the normal font on retina mac. Now adds 33% to the normal size, which exactly matches the previous behavior on Windows, but works better on other platforms.- Added
SwtMisc.getSystemCursorandgetSystemIcon. - Added
Shells.dontOpenwhich makes it possible to create a shell that doesn't open. - Added
Shells.activewhich finds the currently active shell.
- Fixed a bug in
StructuredDropwhich causeddragLeaveevents to get swallowed.
Shellsnow detects the monitor using the center of the proposed bounds, rather than the top-left.- Added
StructuredDrag.copyToClipboard()andStructuredDrop.pasteFromClipboard()(#2). - Reduced noise in
InteractiveTestfailures. - Added
ImageDescriptors.getFromPool(). - Added
Actions.run()which updates theIAction.isChecked. - Made the spacebar visible in
Actions.getAcceleratorString(). - Fix
StructuredDropfor files when executing multiple drags from the desktop.
- Extracted the
com.diffplug.common.swt.ospackage into its own jar with no dependencies, published tocom.diffplug.durian:durian-swt.os. - Added
com.diffplug.durian:durian-swt.{SWT_PLATFORM_CODE}for each ofwin x86,win x64,linux x86,linux x64,mac x64.- Only used for
SmoothTable, if you don't useSmoothTablethen you don't need the platform-specific jar.
- Only used for
- Added useful DnD stuff to
com.diffplug.common.swt.dnd. - Added useful widgets to
com.diffplug.common.swt.widgets.
- Added
TypedDataFieldfor storing strongly-typed data into widgets. - Added
SwtExec.guardOn(DisposableEar ear). InteractiveTest.setResult()can now be called from any thread, and the user can pass any exception.- Implemented
scheduleAtFixedRateandscheduleWithFixedDelayforSwtExecandSwtExec.Guarded. - Improved
CoatMux's reliability. - Deprecated
SwtMisc.requestLayout.
SwtExec.Guardedis now aGuardedExecutor.- Added
SwtRx.disposableEar(). - Added
SwtPlatform.toOS(). - Improvements to
SwtRx.textImmediateandSwtRx.textConfirmed:- now prevents double-calls to
setText(String str). - selections are now preserved in a more intuitive way when the text changes.
- now prevents double-calls to
@SwtThreadcan now annotate exceptions to the rules with@SwtThread(SwtThread.Kind.THREADSAFE).- Added
Corner.getPosition(Control | ToolItem). - Added
Shells.setAlpha(int alpha).
- Bumped RxJava to 2.0, and dealt with some initial fallout from that change.
- Introduced the
SwtThreadannotation to mark that a method is only safe to use from an SWT thread. - Added
SwtExec.swtOnly()as a high-performance, non-thread-safe version ofSwtExec.immediate()(thanks to David Karnok). - Renamed
Shells.openOnAndBlock()toShells.openOnBlocking(). SwtSchedulernow honors theScheduler/Workercontracts (thanks to David Karnok).ColumnFormatandColumnViewerFormatnow expose all their data through getters.- Fallout from 2.0 bump of durian-rx.
- Upgraded Eclipse/SWT dependencies from Luna SR2 to Mars.2 (4.4.2 to 4.5.2).
- Changed
SwtDebugevent names to their 4.5-based names. InteractiveTestcan now pass/fail itself automatically, for self-testing gui tests.- Added
SwtRx.combo()methods for reactive control of combo boxes. - Added
SwtMisc.requestLayout(), which is backported from Eclipse Neon. It will be deprecated when Neon comes out.
- Ditched Guava for DurianGuava.
- Fixed a bug in
OS.calculateNativeon linux x86 systems that report theiros.archasi386.
- Added
Actions.setCallback, which allows behavior based on the actual IAction which ends up being created. - Added
SwtMisc.copyEvent(). - Added
SwtMisc.withGcRunandSwtMisc.withGcCompute, which allows quick access to a GC for e.g. computing the size of some text.
SwtExec.Guarded::subscribenow supportsCompletionStageandCompletableFuture, in support of improvements made to DurianRx 1.2.0.- Added
SwtMisc.setFlag(). - Added
JFaceRx, which exposes JFace properties as RxJava observables.
- Changed OSGi metadata Bundle-SymbolicName to
com.diffplug.durian.swt. - OSGi metadata is now auto-generated using bnd.
- Added
ColumnViewerFormat.ColumnBuilder::setFinalSetup()which allows us to get theViewerColumnobject and setup something such as aCellEditoron it. ColumnViewerFormatno longer requires aLabelProvider, since we might set that stuff up insetFinalSetup().- Fixed a bug in
Shellswhich caused windows to always open on the primary monitor. Actionsis now based onrunWithEvent()rather thanrun(). This allows implementors to get theEventwhich is causing the action to fire, which can allow more detailed actions to be taken.
- Major improvement to the
CoatMuxAPI. - Added
ColorPool.getSystemColor(int systemColor)so that ColorPool can be your one-stop-shop for getting colors. - Added some methods to
SwtMisc:Shell rootShell(Control control)void forEachDeep(Composite root, Consumer<Control> ctlSetter)void setForegroundDeep(Composite root, Color foreground)void setBackgroundDeep(Composite root, Color background)Rectangle globalBounds(Control control)Rectangle toDisplay(Control control, Rectangle rect)Optional<Monitor> monitorFor(Point p)
- Fixed
SwtMisc.setEnabledDeep()- it now skipsComposites which haven't been subclassed. - Fixed
SwtRx.toggle()now works with radio buttons. - Fixed
Shellsso that the dialogs it creates don't automatically close on escape, and so that they are better about opening on-screen.
- Gah! MANIFEST.MF still had -SNAPSHOT version. Fixed now. Would be really nice if we could get MANIFEST.MF generation working.
- Fixed a linux-specific bug in
Shells.openOnActive(). - Fixed an NPE in
Shells.openOnActive(). - Made
InteractiveTest.testShellWithoutHandle()a little more forgiving.
- First stable release.