Commit Graph

184 Commits

Author SHA1 Message Date
Maarten Bent
b912dc380a Fix the DPI in wxSTC IME window
This same modification was made to the Scintilla/SciTE source.
2020-06-24 17:25:19 -05:00
Maarten Bent
6eb357f038 Improve DPI handling in wxSTC
Adjusting the zoom level does not work correctly. It could lead to ever
increasing zoom.
Instead, set the correct DPI of the underlying device context.
2020-06-01 16:45:21 +02:00
wangqr
2f74942eca Improve IME related comments in ScintillaWX 2020-05-14 20:36:05 -04:00
wangqr
f730da3c14 Add imm32.lib to wxStyledTextCtrl 2020-05-11 00:37:56 -04:00
wangqr
e07640fb75 Forward IME messages to ScintillaWX and handle them
The handling code is copied from ScintillaWin

Closes #18759
2020-05-11 00:37:49 -04:00
Olly Betts
5137b8044e Fix flicker in wxGTK wxStyledTextCtrl
Use the same logic for wxGTK (and other platforms using double
buffering) as was already used for wxMac, it seems to result in less
flicker.

Closes #18017.
2019-08-22 14:57:34 +02:00
New Pagodi
d24f58cc55 Add AUTOCOMP_SELECTION_CHANGE event for wxSTC
The SCN_AUTOCSELECTIONCHANGE notification was added in Scintilla 4.0 to
notify an application when a new item is selected in an autocompletion
or user list. However the version of Scintilla currently used is 3.7.2,
so this potentially useful notification is not available.

These changes allow an event corresponding to this notification to be
generated completely in the wxWidgets portion of wxSTC. If the Scintilla
library is ever updated to 4.0 or later, only one method should need to
be modified let Scintilla generate the event instead.
2019-07-13 12:23:06 -05:00
New Pagodi
caaebf43bc Remove wxSTC methods for configuring autocomp popup
The wxSTC methods AutoCompSetColours and AutoCompUseListCtrl were added
in fe7b332b7b to allow some configuration
of the autocompletion popup window. Based on subsequent discussion, it
was decided that a better method of configuring the popup and getting
information about the configuration is needed. For now, simply remove
the current methods while the better solution is created.

In addition, since the configuration options are being removed, set the
popup to have the appearance of a list control since that was the
appearance before any configuration options were added.
2019-07-13 12:20:10 -05:00
New Pagodi
d18d979371 Improve checks in ScintillaWX::ModifyScrollBars
The ScintillaWX::ModifyScrollBars method is used to ensure that the
horizontal and vertical scrollbars are constantly up to date. It
computes the needed max and page size for the scrollbars based on a
combination of input data and internal state variables, compares the
needed values with the scrollbar’s current max and page size, and
updates the scrollbars if there is a difference.

Because of the current logic used, the method will try to update the
scroll bars in two cases where no updates are necessary. First, if a
scrollbar is not visible (or if word wrapping is on for the horizontal
scrollbar), ModifyScrollBars currently tries to set the max to 0.
However on some platforms, such as windows, this call can fail and
result in the max actually being set to 1. Consequently subsequent calls
to ModifyScrollBars will assume the value should be 0 but detect the
scrollbar’s max as 1 and try to update the value again. To avoid this,
instead set the scrollbar’s page size to 1 more than the max.

The second case is only for the horizontal scrollbar. Currently, the
function updates the scrollbar whenever the position is not 0. There
doesn’t seem to be any reason for this check, and so it has simply been
removed.

Closes https://github.com/wxWidgets/wxWidgets/pull/1327
2019-05-26 16:41:12 +02:00
Paul Cornett
bc1295fbdc Allow Scintilla Ctrl-key shortcuts to work with non-Latin keyboard layouts on GTK
See #18370
2019-05-22 09:45:46 -07:00
Vadim Zeitlin
b6477e0b9c Merge branch 'stcpopup'
Many usability and appearance improvements for autocompletion popups and
call tips in wxSTC.

See https://github.com/wxWidgets/wxWidgets/pull/1267
2019-04-21 02:03:32 +02:00
New Pagodi
211b81f459 Restore handling of XPMs with a mask in wxStyledTextCtrl
Fix XPM to RGBA conversion code for Scintilla markers to handle mask
correctly.

Closes #18374.
2019-03-30 03:44:09 +01:00
New Pagodi
267540d233 Add AutoCompUseListCtrl method to STC
The AutoCompUseListCtrl method can be used to make an autocompletion
list look like it's being shown with a wxListCtrl instead of a
wxListBox. When this style is used, the list will have hot tracking.
On MSW, the colours will also be slightly different.
2019-03-20 00:15:38 -05:00
New Pagodi
3900cfec27 Add AutoCompSetColours method to stc
With some system themes, the default colors used for a list box can be
hard to read or otherwise unsuitable for use with an autocompletion
popup. This method lets a user manually specify colours for the list
box’s background, text, selection background, and selected text.
2019-03-20 00:15:31 -05:00
New Pagodi
f0ba9f0ef1 Reduce flicker with STC call tips in MSW
When switching between call tips in MSW, there can be a bit of flicker
when the first is closed and the new one is opened. To reduce the
flicker, store the call tip background in a bitmap and use a very brief
fade-in animation when showing the new call tip.
2019-03-20 00:15:24 -05:00
New Pagodi
59190ffc06 Use wxSTCPopupWindow for call tips in wxSTC
This class has been built to have the features needed for showing popups
with wxSTC and so provides a much shorter implementation for calltips.
2019-03-20 00:14:50 -05:00
VZ
fb8c4bda29 Update src/stc/ScintillaWX.cpp
Co-Authored-By: NewPagodi <NewPagodi@users.noreply.github.com>
2019-03-18 15:43:39 -05:00
New Pagodi
8be4f7dde6 Change wxSTC mapping for SCI_REGISTERIMAGE
Currently the Scintilla message SCI_REGISTERIMAGE is mapped to
wxStyledTextCtrl::RegisterImage(int, const wxBitmap&). This makes
RegisterImage a manually defined method and passes the bitmap directly
to the listbox instead of first converting to an XPM.

To backfill the message map, SCI_REGISTERIMAGE is now mapped to a new
method overload RegisterImage(int, const char* const*). The new method
accepts XPM data instead of a wxBitmap.
2019-03-17 01:48:51 -05:00
New Pagodi
f50b18000a Change wxSTC mapping for SCI_MARKERDEFINEPIXMAP
Currently the Scintilla message SCI_MARKERDEFINEPIXMAP is mapped to the
wxStyledTextCtrl::MarkerDefineBitmap method. This has two
drawbacks. First this requires the XPM image handler be loaded before
this method can be called. Second, any alpha data except for opaque and
transparent is lost in the conversion to XPM format.

Instead have MarkerDefineBitmap be a manually declared method but
reimplemented it in a way similar to how the SCI_MARKERDEFINERGBAIMAGE
message works. The new implementation preserves alpha data if it exists.

To backfill the message map, the SCI_MARKERDEFINEPIXMAP is now mapped to
a new method MarkerDefinePixmap(int, const char* const*). The new method
accepts XPM data instead of a wxBitmap.
2019-03-17 01:48:19 -05:00
Artur Wieczorek
0183b47a45 Fix build with wxUSE_CLIPBOARD==0 2019-02-01 23:36:48 +01:00
Maarten Bent
39ff5b90e5 Replace wxDeprecatedGUIConstants enum values 2018-11-25 21:29:32 +01:00
Maarten Bent
487a3854a3 Fix building stc library with WXQT
When using MSVC compiler, wxUSE_GRAPHICS_DIRECT2D is automatically enabled in setup.h.
But it is only available with WXMSW toolkit, not WXGTK or WXQT.
2018-09-30 17:23:58 +02:00
Vadim Zeitlin
d4f380e16e Use Bind() instead of Connect() in wxWidgets code
Use more modern function which allows to avoid wxXXXEventHandler()
macros use.

No real changes.
2018-05-30 13:06:20 +02:00
Paul Cornett
98cd5a6b20 Use wxString::clear() instead of assignment to wxEmptyString 2018-05-11 10:52:56 -07:00
Jan Niklas Hasse
496da2e550 Remove trailing whitespace from several files
No real changes.

See https://github.com/wxWidgets/wxWidgets/pull/787
2018-04-18 15:45:42 +02:00
New Pagodi
b936bfe85e Add Direct2D support to wxSTC 2018-01-25 16:07:54 -06:00
Paul Kulchenko
c677e4e652 Fix crash on calltip click on macOS
Commit b0d0494f fixed it for autocomplete popup, but a similar issue is
still present for calltips. This commit fixes it.

Closes https://github.com/wxWidgets/wxWidgets/pull/595
2018-01-14 18:51:02 +01:00
New Pagodi
3a362c64cf Implement EVT_MOUSE_CAPTURE_LOST handler in wxSTC
When mouse is captured somwhere in the application, it's recommended
to have implemented a EVT_MOUSE_CAPTURE_LOST handler.
Resetting in the handler flag signalling captured state seems
to be a sufficient action because something like this is implemented
in the native Scintilla and it works fine in SciTE.

Closes #17961.
2017-10-08 10:22:59 +02:00
New Pagodi
6d0cb403a9 Prevent sending EVT_MOUSE_CAPTURE_LOST while opening a context menu in wxSTC
At least under wxMSW and wxGTK opening a popup menu when mouse is captured
generates EVT_MOUSE_CAPTURE_LOST. We would like to avoid this and
to release capture in a controlled way.

See #17961.
2017-10-08 10:11:47 +02:00
New Pagodi
33ad8063d6 Add Scintilla FineTicker methods to wxSTC
Starting with version 3.5, Scintilla implemented a newer method for
handling timers and used this method in its Windows, GTK+, Cocoa, and Qt
ports. This patch attempts to bring the timer handling for wxSTC in line
with those other ports.

Closes #17949.
2017-09-17 11:12:34 +02:00
Artur Wieczorek
cbbd7b44b2 Propagate EVT_CONTEXT_MENU if standard Scintilla context menu wasn't displayed
EVT_CONTEXT_MENU event should be consumed in the event handler only if Scintilla context menu was actually displayed.
2017-03-16 23:36:54 +01:00
New Pagodi
68888ca0a2 Upgrade Scintilla component to 3.7.2
Closes #17705.

Closes https://github.com/wxWidgets/wxWidgets/pull/409
2017-02-12 19:56:21 +01:00
yenwu
beaca78962 Fix vertical scrollbar visibility in wxStyledTextCtrl
Vertical scrollbar didn't appear even when the number of lines in the control
became one greater than the maximal fitting number of lines, but only when one
more line was added.

This seems to have been a simple off-by-one error in SetScrollbar() calls, so
fix this by adding 1 to the upper end of the range.

Closes #17548.
2016-06-04 22:27:00 +02:00
Vadim Zeitlin
e41a59ee07 Fix Unicode conversions in Scintilla code in ANSI build
Don't just use wxWX2MBbuf which is just a "const char*" in ANSI build and can
become a dangling pointer if the string it was constructed from was temporary,
as it happens with the string returned by wxStyledTextEvent::GetString().

Closes #17517.
2016-05-03 16:09:11 +02:00
New Pagodi
0a3057b83c Add GetDirect{Function,Pointer}() methods to wxStyledTextCtrl
These methods can be useful when working with dynamic lexers.

Closes #17481.
2016-04-03 15:50:21 +02:00
Paul Kulchenko
b5ac178789 Upgrade scintilla component to 3.6.3. 2016-03-03 09:49:53 -08:00
Vadim Zeitlin
cc27d305a2 Restore wxSTC built-in key mappings for non-Mac platforms
This was broken by bfdf70d14a, so keep one of
the changes done there conditional on the platform to avoid changing behaviour
for the non-Mac ones.

Closes #17251.
2015-11-16 03:18:06 +01:00
Vadim Zeitlin
6602eb3384 Fix test for wxOSX in wxSTC code
Use "#ifdef", not "#if", to check for __WXMAC__ to avoid warnings about using #if
without argument under the other platforms.

See #16243.
2015-11-11 15:51:12 +01:00
Vadim Zeitlin
a1a06bee7e Set up standard key mappings in wxSTC under OS X
Let users use the familiar key combinations which don't work out of the box in
Scintilla for some reason.

Closes #16243.
2015-11-09 03:43:32 +01:00
Vadim Zeitlin
bfdf70d14a Fix handling of keys with Ctrl modifier in wxSTC under OS X
The real Ctrl key is represented by "meta" modifier bit under OS X as the
"ctrl" bit is used for the Cmd key, but the previously used KeyDown() method
didn't support the meta bit at all, so key combinations using Ctrl didn't
work.

Also remove obsolete code which mapped "meta" to "ctrl", probably predating
the mapping of Cmd to "ctrl" at wx API level.

See #16243.
2015-11-09 03:27:03 +01:00
JulianSmart
965786a0fa Suppressed double hiding/deletion of caret which can cause the caret to go missing from a different window that's currently focused 2015-09-28 14:18:34 +01:00
Vadim Zeitlin
01af56440a Use wxRound() instead of implicit float-to-int conversion in wxSTC.
At the very least, this avoids tons of gcc warnings about implicit conversions
from float to int and it could also be more correct if the coordinates can
really be fractional.
2015-07-27 02:58:07 +02:00
ARATA Mizuki
40a18a74f9 Update Scintilla from 3.4.1 to 3.4.2 2015-06-15 01:32:05 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Vadim Zeitlin
a8bd40d571 Avoid unused variable warning in wxUSE_DATAOBJ==0 build.
Declare variable only used when wxUSE_DATAOBJ==1 inside the check for it.

Closes #16434.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-08-24 13:35:29 +00:00
Vadim Zeitlin
f81a758d4e Stop Scintilla timer when the control doesn't have focus.
This avoids excessive CPU load due to generating completely unnecessary timer
notifications for every wxSTC control in a program.

Closes #14938.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-05 00:26:27 +00:00
Vadim Zeitlin
47138ac8fa Add wxStyledTextCtrl copy/paste text events.
Add wxEVT_STC_CLIPBOARD_{COPY,PASTE} events, allowing to transform the text
being copied from or pasted into wxStyledTextCtrl.

Closes #16191.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-08 14:43:45 +00:00
Vadim Zeitlin
0acb665006 Remove wxStyledTextEvent::m_text and m_dragText.
These fields were unnecessary and duplicated m_cmdString inherited from the
base class.

Also use base class GetString() instead of the redundant GetText() and
GetDragText() in the code, even though these methods are still kept for
backwards compatibility.

See #16191.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-08 14:43:38 +00:00
Vadim Zeitlin
8a245f0ec3 Fix handling of multiple and rectangular selections in wxSTC.
Copy and paste rectangular selections in the standard format, this is
especially important under Windows where a (de facto) standard clipboard
format for such selections exists.

Also fix handling of multipaste, i.e. pasting clipboard contents into several
locations at once.

Closes #16221.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-05 14:42:35 +00:00
Stefan Csomor
f18d7097da adding wxFALLTHROUGH where until now we had comments, allows for code-analysis support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-26 17:36:32 +00:00