- Convert
ControlWrapper
andShells
to kotlin for better nullability. (#27)
OS.detectPlatform
can 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.getNative
orgetRunning
is 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_FIX
is now mutable, which was the intention in4.1.0
.
SiliconFix
now has apublic static boolean APPLY_FIX
field 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.
SwtExec
can now plays nicely with Kotlin coroutines.CoatMux.Layer
now exposes its rootControl
instance (#12).VScrollCtl
andVScrollBubble
for easier VScroll handling (#10).
- BREAKING
SwtRx
is 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
aarch64
binaries, 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
SiliconFix
that does nothing on all platforms except Apple Silicon where it callssetFont(null)
. - Wherever a
Table
orTree
instantiated (SmoothTable
andColumnFormat
), we useSiliconFix
. - This workaround is perfectly effective as of
4.21
and4.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
, andSwtPlatform
classes. (#13) - Added
DropTargetEvent
support toSwtDebug
. - Added
LinkBtn.create
.
- Improved javadoc publishing (though SWT is still broken)
- Added
FlatBtn.setBackground
andFlatBtn.setSelection
. - Added
Shells.dontSetPositionOrSize
andShells.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.transparent
for efficiently passingControl
toControlWrapper
. - Added
ControlWrapper.setParent
which is a pure delegation toControl.setParent
. - Improved
StructuredDrop.handler
. - Added
SwtMisc.globalBounds
forControlWrapper
. SwtDebug.dumpEvent
is 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.getSystemCursor
andgetSystemIcon
. - Added
Shells.dontOpen
which makes it possible to create a shell that doesn't open. - Added
Shells.active
which finds the currently active shell.
- Fixed a bug in
StructuredDrop
which causeddragLeave
events to get swallowed.
Shells
now detects the monitor using the center of the proposed bounds, rather than the top-left.- Added
StructuredDrag.copyToClipboard()
andStructuredDrop.pasteFromClipboard()
(#2). - Reduced noise in
InteractiveTest
failures. - Added
ImageDescriptors.getFromPool()
. - Added
Actions.run()
which updates theIAction.isChecked
. - Made the spacebar visible in
Actions.getAcceleratorString()
. - Fix
StructuredDrop
for files when executing multiple drags from the desktop.
- Extracted the
com.diffplug.common.swt.os
package 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 useSmoothTable
then 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
TypedDataField
for 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
scheduleAtFixedRate
andscheduleWithFixedDelay
forSwtExec
andSwtExec.Guarded
. - Improved
CoatMux
's reliability. - Deprecated
SwtMisc.requestLayout
.
SwtExec.Guarded
is now aGuardedExecutor
.- Added
SwtRx.disposableEar()
. - Added
SwtPlatform.toOS()
. - Improvements to
SwtRx.textImmediate
andSwtRx.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
@SwtThread
can 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
SwtThread
annotation 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()
. SwtScheduler
now honors theScheduler/Worker
contracts (thanks to David Karnok).ColumnFormat
andColumnViewerFormat
now 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
SwtDebug
event names to their 4.5-based names. InteractiveTest
can 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.calculateNative
on linux x86 systems that report theiros.arch
asi386
.
- Added
Actions.setCallback
, which allows behavior based on the actual IAction which ends up being created. - Added
SwtMisc.copyEvent()
. - Added
SwtMisc.withGcRun
andSwtMisc.withGcCompute
, which allows quick access to a GC for e.g. computing the size of some text.
SwtExec.Guarded::subscribe
now supportsCompletionStage
andCompletableFuture
, 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 theViewerColumn
object and setup something such as aCellEditor
on it. ColumnViewerFormat
no longer requires aLabelProvider
, since we might set that stuff up insetFinalSetup()
.- Fixed a bug in
Shells
which caused windows to always open on the primary monitor. Actions
is now based onrunWithEvent()
rather thanrun()
. This allows implementors to get theEvent
which is causing the action to fire, which can allow more detailed actions to be taken.
- Major improvement to the
CoatMux
API. - 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 skipsComposite
s which haven't been subclassed. - Fixed
SwtRx.toggle()
now works with radio buttons. - Fixed
Shells
so 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.