~ubuntu-branches/ubuntu/wily/aegisub/wily-proposed

« back to all changes in this revision

Viewing changes to src/scintilla_text_ctrl.cpp

  • Committer: Package Import Robot
  • Author(s): Sebastian Reichel, Pascal De Vuyst, Juan Picca, Sebastian Reichel
  • Date: 2015-08-04 21:40:50 UTC
  • mfrom: (5.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20150804214050-y2aghm9vdksoc8t7
Tags: 3.2.2+dfsg-1
[ Pascal De Vuyst ]
* Fix Typo in package description (Closes: #739219)

[ Juan Picca ]
* Add patch to fix reproducible build (Closes: #789728)

[ Sebastian Reichel ]
* New upstream release
 - remove vendor directory from orig tarball
* Update Debian Standards Version to 3.9.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright (c) 2007, Rodrigo Braz Monteiro
2
 
// All rights reserved.
3
 
//
4
 
// Redistribution and use in source and binary forms, with or without
5
 
// modification, are permitted provided that the following conditions are met:
6
 
//
7
 
//   * Redistributions of source code must retain the above copyright notice,
8
 
//     this list of conditions and the following disclaimer.
9
 
//   * Redistributions in binary form must reproduce the above copyright notice,
10
 
//     this list of conditions and the following disclaimer in the documentation
11
 
//     and/or other materials provided with the distribution.
12
 
//   * Neither the name of the Aegisub Group nor the names of its contributors
13
 
//     may be used to endorse or promote products derived from this software
14
 
//     without specific prior written permission.
15
 
//
16
 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
 
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
 
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
 
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20
 
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21
 
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
 
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
 
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
 
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
 
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
 
// POSSIBILITY OF SUCH DAMAGE.
27
 
//
28
 
// Aegisub Project http://www.aegisub.org/
29
 
 
30
 
/// @file scintilla_text_ctrl.cpp
31
 
/// @brief Customised version of wxStyledTextControl used for main edit box
32
 
/// @ingroup custom_control
33
 
///
34
 
 
35
 
#include "config.h"
36
 
 
37
 
#include "scintilla_text_ctrl.h"
38
 
#include "utils.h"
39
 
 
40
 
ScintillaTextCtrl::ScintillaTextCtrl(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style)
41
 
: wxStyledTextCtrl(parent, id, pos, size, style, value)
42
 
{
43
 
        Bind(wxEVT_MOUSEWHEEL, &ScintillaTextCtrl::OnMouseWheel, this);
44
 
}
45
 
 
46
 
/// @brief Get unicode-compatible position
47
 
int ScintillaTextCtrl::GetUnicodePosition(int pos) {
48
 
        return GetText().Left(pos).utf8_str().length();
49
 
}
50
 
 
51
 
/// @brief Reverse unicode-compatible position
52
 
int ScintillaTextCtrl::GetReverseUnicodePosition(int pos) {
53
 
        wxCharBuffer buffer = GetTextRaw();
54
 
        return wxString::FromUTF8(buffer.data(), std::min<int>(pos, buffer.length())).length();
55
 
}
56
 
 
57
 
/// @brief Start unicode-safe styling
58
 
void ScintillaTextCtrl::StartUnicodeStyling(int start,int mask) {
59
 
        StartStyling(GetUnicodePosition(start),mask);
60
 
        // Cache the text for styling as GetText is hideously slow
61
 
        text = GetText();
62
 
}
63
 
 
64
 
/// @brief Unicode-safe styling
65
 
void ScintillaTextCtrl::SetUnicodeStyling(int start,int length,int style) {
66
 
        // Get the real length
67
 
        int len = text.Mid(start, length).utf8_str().length();
68
 
 
69
 
        // Set styling
70
 
        SetStyling(len,style);
71
 
}
72
 
 
73
 
/// @brief Set selection, unicode-aware
74
 
void ScintillaTextCtrl::SetSelectionU(int start, int end) {
75
 
        SetSelection(GetUnicodePosition(start),GetUnicodePosition(end));
76
 
}
77
 
 
78
 
void ScintillaTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
79
 
        if (ForwardMouseWheelEvent(this, evt)) {
80
 
                // Skip the event so that wxSTC's default mouse wheel handler is hit
81
 
                evt.Skip();
82
 
        }
83
 
}