Instead of wrapping the source event and modifying it, they are
now proper events that are displayed themselves (and the original
message is suppressed).
This allows highlights to be formatted differently.
Issue #669
Only rejoin channels that active when disconnected
If a channel is parted for any reason other than a disconnect
(e.g. a local /part, or a remote part/kick) then the channel
shouldn't be rejoined on reconnection.
Closes #667
These are all present in res/, so there's no need for them
to be in src/. I think we just forgot to delete them after
switching to proper resource dirs.
Guava provides a nice class which uses the public suffix list,
so we can ditch all of our hand-crafted logic and pathetically
small list of top level domains and do it properly.
Add a base class for events with a WindowModel source.
For #662, it makes sense to have a standard way to
get the source from events we may wish to filter.
This introduces a SourcedEvent interface, and adapts classes
to use it.
This allows windows to be uniquely identified and shared with
clients that are running outside of the DMDirc process (e.g.
a web UI, or a remote instance).
Instead of WindowModel defining lots of methods on the off-chance
that the window is writable, pull them all into a separate
optional InputModel.
For ease of transition, FrameContainer will just implement both,
but eventually the input handling should be pulled out into
its own class.
Despite its name and description, the WindowManager relied on
each FrameContainer having a reference to its parents and all
its children.
The WindowManager now stores this information itself, and so
the FrameContainer methods can be gradually phased out.
This release contains some performance improvements compared
to the version we were using.
Error handlers are now passed in at construction time, so
there was a small bit of refactoring required.
With numeric formatting gone, all output is either added direct
to a window (which will be changed soon) or done through
displayable events. Message sinks are now completely unused,
as they don't affect displayable events.
Issue #426