Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
Features used are move constructor, unique_ptr, deleted functions, enum class,
lambda expression, and range for loop.
|
|
|
|
|
|
Use a per-line cache to avoid re-computing the offset from the start of
the buffer each time. This dramatically speeds up multiple replacements
on large files.
|
|
On GTK2 and GTK3 < 3.3.6 there is no GtkAccessibleClass::widget_unset()
method, so we can't destroy our accessible object right away. So, to
avoid accessing a destroyed widget, we need to check whether the widget
still exists in the the ScintillaGTKAccessible destructor.
In other methods it's not necessary because the wrapping GObject class
makes sure not to forward other when the widget has been destroyed, but
we still have to destroy the C++ instance no matter what, so the check
has to be on this side.
|
|
Really restrict smooth scrolling handling to Wayland.
|
|
Avoid crash when detaching the widget from the accessible object
without destroying that widget.
In such situations, the widget is still valid but we will have
destroyed the orphaned accessible object. Thus, we must make sure we
disconnected the signal handlers the late accessible had set up on the
widget, as they won't be implicitly disconnected by widget
finalization in this case.
|
|
|
|
|
|
These are used to ensure popup windows are fully on-screen but after this
change, this doesn't always work on GTK+ 3.22 / Wayland.
|
|
|
|
setting the owning window by calling gtk_window_set_transient_for.
|
|
|
|
We cannot compute the length in characters after the text has been
deleted, so we need to compute it in BEFOREDELETE. However, we need to
emit the signal once the buffer has actually changed, so we need to
cache the value in-between those events.
|
|
|
|
|
|
|
|
|
|
Rerun make deps to cover recntly added files.
|
|
|
|
|
|
|
|
|
|
Either remove the parameter name if it is never used, or mark it with
G_GNUC_UNUSED when it might be used depending on some preprocessor
flags.
|
|
Once Dispose() has been called, scrollbars will be NULL, so we need to
check against this in code that might run after Dispose().
Fixes scary warnings on certain widget destruction scenarios.
|
|
|
|
GTK clipboard is asynchronous, which means that the answer to a request
can theoretically arrive at any moment in the future after the request.
This poses a problem as the receiving code has to make sure the object
on which the paste was requested still actually exists by the time the
response arrives, as it could have been destroyed in the meantime.
A possible solution is to add a reference to the object during the
query so that it is kept alive as needed. However, this means that if
the paste request really takes a long time to get answered, it can
prevent the application from destroying the object explicitly,
possibly at the user's request.
So instead, use a helper object adding a weak reference to the object,
and only process the paste request response if the object is still
alive then.
All this is fairly theoretical though, as in practice paste is
generally not effectively asynchronous (GTK tries and calls the
response callback directly in the request call when possible), and when
it is effectively asynchronous, it generally is very fast.
|
|
GTK 3.21.0 fixed font size handling, leading to properly interpreting
pixels and points in CSS declarations. However, as older versions
incorrectly handled those, the code has to handle both behaviours.
From CSS, GTK < 3.21.0 actually applied the conversion to points, but
incorrectly: 10px was used as 10pt, but 10pt was scaled up twice.
So, assuming 96 DPI, it leads to:
font-size | 3.20.0 | 3.21.0 |
----------|---------|---------|
10px | 13.33px | 10px |
10pt | 17.77px | 13.33px |
So, we need to fix the code to accommodate for both (either scaling
ourselves, or adapting the unit: I chose the second, simpler, option).
See https://git.gnome.org/browse/gtk+/commit/?id=df08fc91bdc1d2e4c866122304fabe4dd298a7de
|
|
|
|
Allow out-of-sources build by setting Make variable srcdir.
This still generates the scintilla.a library in the source directory, though.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Currently, the ScintillaObject signals can't be used from python code via
gobject-introspection. This is because g-ir-scanner does not properly scan
the signals.
For signals, there is the additional requirement that parameters have are
registered GTypes. For the sci-notify signal, this can be accomplished by
boxing SCNotification.
In addition, g-ir-scanner also runs on Scintilla.h where it picks up
additional structs.
test/gi/ is updated accordingly. The test python script is enhanced
to showcase the signals (some fixes to the makefile are included as well).
|
|
This makes it easier to update or add new marshallers.
Also, re-generate the current one using a current version of
glib-genmarshal, which generates different output (accessing different
fields for enum and flags) since at least 2008. Although neither of
these types are currently used, it seems safer this way.
|
|
|
|
Currently, the ScintillaObject signals can't be used from python code via
gobject-introspection. This is because g-ir-scanner does not properly scan
the signals.
For signals, there is the additional requirement that parameters have are
registered GTypes. For the sci-notify signal, this can be accomplished by
boxing SCNotification.
In addition, g-ir-scanner also runs on Scintilla.h where it picks up
additional structs.
test/gi/ is updated accordingly. The test python script is enhanced
to showcase the signals (some fixes to the makefile are included as well).
|
|
The idle callback removal clause in the ScintillaGTK destructor got
broken in 4e5c321dda8e69104cb7b639c3107dc11dbc00f6, leading to the
callback not being removed thus possibly running after the instance
destruction.
Indeed, gdk_threads_add_idle() wraps g_idle_add() with a custom user
data, thus making the g_source_remove_by_user_data() call in the
destructor incorrect, as we give it our own user data, not GDK's
wrapper one.
Fix the callback removal not to use user data matching to avoid this.
|
|
matches g_iconv exactly. Make character set name buffer dynamically sized.
|
|
|
|
|
|
|
|
GTK 3.20 doesn't seem to like it so much when looking up details of a
non-exact current style context state, so use the current one.
This is GTK being really picky as in this case we are just missing the
`DIR_LTR` flag, which we definitely don't care about, but let's make it
happy.
|