Commit Graph
201 Commits
Author SHA1 Message Date
waddlesplash 888ea83454 Revert "BTextView: Update word-wise/line-wise shortcuts"
This reverts commit 74ef92bc55.

Change-Id: I441d9cce87670e17141051fded594ae8aa6fc1fd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9299
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2025-05-21 17:46:34 +00:00
John Scipione 16c6cc4418 BTextView: Fixup AdoptSystemColors() and HasSystemColors()
Replace private _UsesSystemColors() with public HasSystemColors()
and make sure to consider the tints when checking if system colors
are used or not.

Document HasSytemColors() in the Haiku Book.

Change-Id: I78de4904d5ddb24b98ad27eb93d4e5ccb330d76a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8897
Haiku-Format: Haiku-format Bot <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2025-02-03 00:14:52 +00:00
John Scipione 74ef92bc55 BTextView: Update word-wise/line-wise shortcuts
... and set alternates. This is updated because we can now set
shortcuts without B_COMMAND_KEY. Setup Alt for Win/Linux mode.

* Word-wise shortcuts Option+arrows.
* Line-wise shortcuts Alt+arrows AND Ctrl+arrows for
  Win/Linux mode and for when there's a conflict.

Otherwise these shortcuts are not expected to conflict.

Add shortcuts for Alt+Backspace and Alt+Delete to delete to
the beginning or end of line instead of word.

Split out vertical and horizontal shortcuts so that if one is
used by an app we at least get the other one.

Fixes #9913

Change-Id: I0124fec7df4585a70ded8d3e7bf2aa8cb4acecb4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7289
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: John Scipione <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
2025-02-02 19:18:35 +00:00
John Scipione 9105063938 BTextView: Use document colors on AdoptSystemColors()
AdoptSystemColors() tints document background color to match panel
color if uneditable.

Calling MakeEditable() will automatically apply or unapply uneditable
background tint if you have previously called AdoptSystemColors().

Parent BView::AdoptSystemColors() sets panel colors, we want document
colors here. Do not alter text color - only view, low and high colors
are changed.

Document AdoptSystemColors() and MakeEditable() in BTextView docs.

Change-Id: Ib215735f27bb01fc2f95fcf2fee0185e5fc83f70
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8263
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2025-01-17 16:57:38 +00:00
Máximo Castañeda 8773f8b854 BTextView: improve layout without word wrapping
- Don't add the insets twice for the preferred width when it is clamped
  to the minimum one.
- Set the minimum size to the preferred one.
- Line breaking depends on text content, not available width, so can be
  done without a valid text rect.

Change-Id: I511d07a8e0ed78330a232679495a1564bfcd22cb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7818
Tested-by: Commit checker robot <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2024-07-08 10:56:53 +00:00
X512 747004e221 tracker: fix file name edit field misalignment
Font size have no direct relation with actual text line height and is a
choose of a font designer. Ascend + descent formula should be used to
calculate actual text line height.

`BRect` `right` and `bottom` coordinates are inclusive so it means for
example `BRect(0, 0, 15, 15)` width is 16 pixels.
`BRect::Width`/`Height` methods returns `right - left` and
`bottom - top` accordingly so actual size in pixels bigger by one. There
is some confusion that string width and rect width have a difference by one.

Change-Id: If29f8a2e6804a90e63dd2d92580160160229392f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7668
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2024-05-19 08:57:07 +00:00
John Scipione e26329ce22 BTextView: Prevent scrolling if text rect is inside view rect
No horizontal (or vertical) scrolling allowed if the text rect is
inside the view rect in x (or y).

This fixes issues with right-aligned text views getting scrolled
within bounds becoming left-aligned text views. Prevent scrolling
so that this cannot happen unless text is outside the view.

You can still get DeskCalc to be in a scrolled over no-longer-
right-aligned state by scrolling and resizing repeatedly, but
it's better than before and it is at least fixable. This is most
likely a bug in DeskCalc.

This also fixes issues not being able to scroll all the way right
after scrolling left dragging with the mouse.

Do not set any limits in _PerformAutoScroll(), all limits are set
by the code that does the keyboard handling. Set x and y and call
_ScrollBy();

Update limits set in _ScrollBy() to accommodate both keyboard
and mouse (taking from mouse and using on keyboard as well).
This unifies keyboard and mouse scroll limits in x and y.

Change-Id: I0dd24ce03f9b95651bcee4e190564b77f0343863
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7161
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: John Scipione <[email protected]>
2023-12-10 09:44:58 +00:00
John Scipione 64a2e73375 Add _ViewWidth(), _ViewHeight(), _TextWidth(), _TextHeight()
private convenience methods to calculate the text view width and
height with insets and the text rect width and height without
insets respectively.

Also add _ViewRect() and _TextRect() methods for completeness,
but they are not currently used.

Change-Id: I0582bc93a0a3a6820bbb2262a1d726457309ab9f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7162
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2023-12-08 10:14:14 +00:00
John Scipione 0509d19b91 BTextView: Stylish fix, -x is clear we don't need -1 * x
Change-Id: I38a5e6c88e2ba3b2f82c49aa760942e1799a7595
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7171
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2023-12-05 16:50:27 +00:00
PulkoMandy 52050c56f6 BTextView: improve GetHeightForWidth in non editable mode
In non editable mode, BTextView computes a preferred size that just fits
the current text. This did not take into account the insets from
SetInsets, so, when these are used, the resulting view size was too
small.

Additionally, avoid calling _Refresh that has two problems: it needs the
view to already be attached to a window, and it does a lot of things we
don't really need here: recomputing scrollbars, clearing the empty space
below the text to avoid flickering, and so on. We just need to recompute
fTextRect according to the suggested width, to do that, it is enough to
call _RecalculateLineBreaks instead.

Finally, also restore the text rect at the end of the method, since it
is not actually resizing the view, it is very unexpected that it changes
the text rect. This is not perfect, as the line breaks from
_RecalculateLineBreaks are not undone. But, since the next step is
probably to resize the view according to the computed width/height, this
will be sorted out at that time. If this proves to be a problem, we can
add a second call to _RecalculateLineBreaks after restoing the original
text rect, or refactor _RelcalculateLineBreaks so that it can return the
new height without actually changing the lines.

Change-Id: Ie2fa60c1b2314c8a3346d03ab3ff6843aebaf3dc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6845
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2023-08-19 15:15:00 +00:00
John Scipione cfbfb8473c BTextView: Allow nav on selectable but non-editable views
This allows arrow keys, page keys, home, end and the
blinking cursor on selectable views even if they are
non-editable. Input of text characters and backspace
are guarded on editable. Paste remains disabled.

Change-Id: Ifa5ed8673104e9abd51c52d394894aef48243965
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6407
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2023-05-06 16:39:58 +00:00
John Scipione 7912dad947 BTextView: Fix Tracker edit name
Don't resize text view in FrameResized() if resizable, this is done
in _AutoResize() instead. Set text rect width to width of max line when
word-wrap is off. Text rect width shrinks to the width of the text
matching behavior of BeOS R5 and previous Haiku. This fixes Tracker
Edit name.

Limit max width to column width in list mode or 30em in icon mode.
Filter paste messages limiting to max width in Tracker Edit name.

General BTextView fixes:

As a consequence of the text rect shrinking to fit the text, adjust
highlighting to go at least to edge of the view even if text rect width
is narrower. Extend the invalidation area beyond text rect when
redrawing to include highlighted areas.

Text views behave properly when overflow occurs i.e. when you type
text off the end of the text view. The text is nudged over as you
type/scroll so that the previous text is visible. This sorta worked
before but now works better.

Fix text rect centering by replacing switch with
BLayoutUtils::AlignOnRect().

Coalesce consecutive draw calls when inserting and deleting text to
prevent flashing for example when resizing the window. Redraw text
when the text view scrolls fixing a bug I noticed in StyledEdit.

Workaround negative height Beezer bug.

Fixes #16642, #16476

Change-Id: I2d32d6039944d2dc3218ce4de71f2966cc98c866
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3642
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2021-06-20 14:46:53 +00:00
X512 d00fc0e3e6 BTextView: fix Text field scripting
Change-Id: I2048d7f01fa3694d5687447cf7058fecf03ae15d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4007
Reviewed-by: X512 <[email protected]>
Reviewed-by: John Scipione <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2021-05-29 12:17:24 +00:00
X512 08e58a41e5 TextView: Select dropped text if focused
This is convenient and used in most text editors.

Change-Id: Ia39b9e6f16cc381a62e10b248033729179a0996c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2110
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: John Scipione <[email protected]>
Reviewed-by: Niels Sascha Reedijk <[email protected]>
2021-01-25 08:13:41 +00:00
John Scipione 1897036191 BTextView: ensure text rect width and height is > 0
Helps wth #16476 #16568

Change-Id: Idc8d399cf69776d26e492f568c9ef83bcd7a6686
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3413
Reviewed-by: Adrien Destugues <[email protected]>
2020-11-26 07:27:19 +00:00
John Scipione b76afa5bc0 BTextView: Draw string even if foundTab
Fixes #16544 (regression from hrev54549.)

Change-Id: Icca0b50f5432351b9c7ffcb82b1c8195a7ed286b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3267
Reviewed-by: humdinger <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2020-09-26 16:37:02 +00:00
John Scipione d9385a9d38 IK: align BTextView text rect/fix alignment
Recalculate line breaks in FrameResized() if word-wrap is on, otherwise
only move the text rect into position. StyledEdit was recalculating line
breaks before on resize (we have to in this mode) and the frame offset
updates for non-wrapping text views are inexpensive. This makes resizing
text view's work like StyledEdit everywhere.

Scroll to cursor when word-wrap setting changes if text view is editable.
If you are viewing a long document changing word-wrap can move the cursor
quite far, so scroll back to it.

Fix _ActualTabWidth() pen location for right and center-aligned text views
so that tabs widths are calculated correctly.

Reset fTextRect horizontal limits to bounds minus insets in
_RecalculateLineBreaks(), then grow fTextRect based on alignment when
wrap is off.

Fixing insets also fixes right and center-aligned BTextViews.
Left-aligned text view's grow right, right-aligned ones grow left,
and center-aligned ones grow out.

Make extra scrolling space for all aligned text views go the other way
from how it did in hrev24130 (and on left-aligned text view's too) so
that half the text is visible when you edit past the end or before the
beginnning of a text view instead of none of it.

Fixes #1651 #12608 #13796 #15189

Do not _RecalculateLineBreaks() if text view bounds are invalid.
In SetText() detect invalid text view bounds and resize the view to the
width and height of the first line. Then recalculate line breaks.
This fixes BAlert text view size issues.

Fixes #16481 (regression from hrev54496.)

Remove useless and heavy computation. There is no point in computing line
breaks for a 10px wide text view and it takes a long time because it needs
a lot of linebreaks. The view eventually gets laid out properly.

Fixes #5582 (which was not locale-related, after all.)

Only apply default insets if text rect is set to bounds. This ensures
that apps that manipulate the text rect can continue to do so without
the default insets interfering while apps that don't can benefit
from the defaults. If you want to set the text rect to bounds and
not use the default insets you must override the default by calling
SetInsets(). This prevent the default insets from being applied once
apps have changed the text rect fixing a bug in Icon-O-Matic where the
text rect insets were being applied incorrectly.

Fixes #16488 (regression from hrev54496.)

Reduce left and right insets inside text views from full label spacing
to half label spacing. Unify padding between BTextControl and BTextView.

Move fLayoutData->UpdateInsets() to private BTextView::_UpdateInsets()
because we need access to BTextView member variables when deciding
whether or not to add the default padding or not.

_UpdateInsets() changes:
* Don't update insets if BTextView::SetInsets() was called.
* Don't add default insets unless fTextRect is set to view Bounds().
* Do not set the right and bottom insets to left and top if negative,
  set them to 0 like we do to left and top -- DeskCalc bug otherwise.

Fixes #15688

Other BTextView fixes:
* Replace max_c and min_c with std::max and std::min respectively.
* Remove scrolling from one instance of BTextView::SetText() as it
  produced undesired results while editing a scrolled text view.
* Add default insets in _UpdateInsets()
* Fix scrolling when entering and deleting text so that some part of
  the text is always visible. Make visible scroll width depend on font
  size.
* Allow scrolling to a negative offset in x but not y. This allows you
  to scroll the entire contents of right and centered-aligned text views
  whose content does not fit in the box.
* Change _Refresh() to take an offset instead of a bool so that you can
  scroll to any offset.
* Replace TextLength() with fText->Length() in a couple of places.

TextControl changes:
* Set text rect in BTextControl::DoLayout().
* Remove AlignTextRect() from TextInput.

Fix the following problems in apps:

ScreenSaver: Set text rect in PreviewView::AddPreview().
Tracker: Set "Edit name" text view insets to 2. Tweek text rect position
  to be on top of label in icon, mini-icon, and list mode. Add a TODO that
  the text rect is a pixel off from the name on some files.
Mail: Remove _AlignTextRect() and FrameResized() from AddressTextControl.
  Use default insets on the text view, defaults are fine here.
DeskCalc: Set insets based on font size in ExpressionTextView
  SetTextRect() instead of manipulating the text rect.
  Remove _CheckTextRect() and related methods from InputTextView.
Icon-O-Matic: Remove _CheckTextRect() and related methods from InputTextView.
WebPositive: Remove _AlignTextRect() and FrameResized() from URLTextView
  and call SetInsets().
StyledEdit: Word-wrap and FrameResized() changes ported to BTextView.

Fixes #16476 #16480 #16488 (regressions from hrev54496.)

Change-Id: Ifeca6077f8815ccd86d5a3880f99556298aaf0fe
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3152
Reviewed-by: John Scipione <[email protected]>
2020-09-07 22:10:36 +00:00
John Scipione 6148533ec2 Revert "BTextView: remove useless and heavy computation"
This reverts commit ca6302dded.
2020-08-23 00:09:46 -04:00
John Scipione 22758f1690 Revert "IK: align BTextView text rect/fix alignment"
This reverts commit a9b301871d.

hrev54496

Change-Id: Ife3c834ad98d330f04976d9adf3b1553e7aca034
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3153
Reviewed-by: Axel Dörfler <[email protected]>
2020-08-19 03:38:41 +00:00
John Scipione a9b301871d IK: align BTextView text rect/fix alignment
Preserve passed in text rect in fTextRext (unless in layout)
and create an internal version fAlignedTextRect which is used
in place of fTextRect. fAlignedTextRext is aligned to fit the
text rect bounds and grows to fit. fAlignedTextRect always grows
vertically but only grows horizontally if wrap is off.

Left-aligned text view's grow right, right-aligned ones grow left,
and center center aligned ones grow out.

Set fTextRect to bounds in _DoLayout().

Reduce left and right padding inside text views from full label
spacing to half label spacing. Unify padding between BTextControl
and BTextView.

Fixing padding also fixes right and center-aligned BTextViews.

Undo extra scrolling for non-left text views from hrev24130 fixing
a scrolling left and right with mouse bug when it shouldn't.

Replace max_c and min_c with std::max and std::min respectively.

Remove scrolling from one instance of BTextView::SetText as it
produced undesired results while editing a scrolled text view.

Set text rect in BTextControl::DoLayout() and ScreenSaver
PreviewView::AddPreview().

Don't add padding if BTextView::SetInsets() is called. Set insets
to 0 in Tracker "Edit name" setting which prevents default padding
from being added. This is so that when you rename a file in Tracker
the TextView appears on top of the file name text with no padding.

80 char limit fixes.

Fixes #1651 #12608 #13796 #15189 #15688

Change-Id: I8c6106effc612f49aff374f29742471628b5df86
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3054
Reviewed-by: Adrien Destugues <[email protected]>
2020-08-06 11:51:15 +00:00
Adrien Destugues ca6302dded BTextView: remove useless and heavy computation
There is no point in computing line breaks for a 10px wide text view and
it takes a long time because it needs a lot of linebreaks. The view
eventually gets laid out properly.

This may cause regressions, the TODO here is very old and I don't know
to which "other parts of the code" it refers. Possibly they were
rewritten, possibly not. In any case, there is no point in keeping this
nonsense initial text rect computation, it's better to fix the actual
problems.

Fixes #5582 (which was not locale-related, after all)
2020-08-05 18:39:28 +02:00
X512 67597f4204 Interface kit: fix regression introduced in hrev53944
In hrev53944 selection is cleared if text view lose focus, but it
don't work properly in StyledEdit, causing clearing selection when
menu is opened. Clear selection on lose focus is needed for text controls,
so when you click on another text control, previosly focused text
control should clear selection. This behavior is working in BeOS, so
some investigation is required.

Fixes #15810.

Change-Id: Ie104fc1d7e76c2cd2b97d3a0462856fe70cccbbf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2355
Reviewed-by: Stefano Ceccherini <[email protected]>
2020-04-11 16:55:53 +00:00
X512 1c9c772967 Interface Kit: make BTextControl behave like BeOS
Contents of BTextControl should be not selected if text is directly clicked.
Selection should be removed if BTextView lose focus.

Change-Id: Ifba914c2ada4fc1aac88205f69a64a4356009469
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2109
Reviewed-by: waddlesplash <[email protected]>
2020-03-07 18:48:32 +00:00
X512 bb501d4c74 BTextView and BListView: fix scripting
fix #15539

Change-Id: I5139b91214e19b35af1ead203c070837b7a15bd9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2017
Reviewed-by: Jérôme Duval <[email protected]>
2019-12-16 09:51:16 +00:00
Adrien Destugues 9c89ceb807 BTextView: missing archiving of HideTyping()
This was not stored in BeOS, but that looks like an oversight on their
part and adding it is unlikely to break anything.

Change-Id: I5dbaeb85adf97afc5040a3ecc1bff264af0b0b57
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1888
Reviewed-by: Axel Dörfler <[email protected]>
2019-11-06 07:36:20 +00:00
Adrien Destugues 07838f4cd3 BTextView: preserve ViewUIColor when unarchiving
When unarchiving, we can rely on BView to properly restore the colors,
and we should not alter them. So move the code doing that outside of
_InitObject, and into all non-unarchiving constructors instead.

Change-Id: I98050c69bb3b8edf6e77ad0498e2dade5eaadb1d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1887
Reviewed-by: waddlesplash <[email protected]>
2019-09-27 22:53:42 +00:00
Adrien Destugues 1ec8732c71 PVS V506: using pointer to deallocated stack space
Change-Id: I43f7d0208f7d644d6f4274a9a718773f7a1346a0
Reviewed-on: https://review.haiku-os.org/c/1600
Reviewed-by: Stephan Aßmus <[email protected]>
2019-07-16 20:35:56 +00:00
Kacper Kasper 17c9e98743 TextView: add shortcuts for wordwise delete
Change-Id: Ie67f6255c3f5d9d8ccc6699ed42dd71ae593fa16
Reviewed-on: https://review.haiku-os.org/c/1573
Reviewed-by: Adrien Destugues <[email protected]>
2019-07-14 14:14:39 +00:00
Augustin Cavalier df4074fbed Remove a lot of unused constants.
Spotted by Clang. No functional change intended.
2018-11-24 19:21:16 -05:00
hy che 7cf48d4e51 TextView: Remove redundant check in ScrollToOffset as PointAt() already does the check.
Change-Id: I2bf541fca84ef27749484ee1be05fb9debac32e2
2018-03-22 10:28:44 +00:00
Humdinger 346d149694 Properly terminate property_info lists
BListView's property_info list lacked termination, resulting in
garbage output at the and of 'hey getsuites'.

Use { 0 } everywhere for sake of consistency.

Thanks to waddlesplash for spotting the bug an providing the easy fix.
2017-11-05 18:43:21 +01:00
Sean Healy e683838e86 BTextView: Fix archiving after setting and unsetting disallowed characters.
If you disallow and then re-allow characters, so that the number of disallowed
chars returns to zero, BTextView::Archive will fail with "Invalid Argument".

Fixes #13520.

Signed-off-by: Augustin Cavalier <[email protected]>
2017-05-19 21:05:34 -04:00
looncraz 7a96554cb3 kits/interface: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <[email protected]>
Patches 0003-0017 from looncraz, unmodified.
2016-01-04 07:04:45 -05:00
Augustin Cavalier 3c85734188 BTextView: Don't crash if the file supplied is zero-length.
Fixes #12551.
2015-12-31 20:54:27 -05:00
Axel Dörfler 103adddb37 BTextView: do not restrict max size in GetHeightForWidth(). 2015-08-17 21:08:16 +02:00
Axel Dörfler e27a53b231 BTextView: implemented height-for-width when read-only.
* This is not an ideal implementation, as it actually relayouts
  the text view. IOW it's actually wrong, but it does seem to
  work without any issues.
2015-07-30 19:49:58 +02:00
Humdinger 53253ac470 Sentence casing in context menus. Thanks Janus for noticing. 2015-03-13 20:01:47 +01:00
Adrien Destugues ce39d3a366 BTextView: use calloc to replace malloc+memset
Fixes #11721.
2015-01-09 11:04:16 +01:00
John Scipione dc4ae0e9c0 TextView: Fix regression for Home and End
... while Shift is held down in a selection.

Before this commit, if you had some text selected and you pressed
Home or End with a Shift held down the selection would not change.
This was annoying and most likely unintentional. Thank you Axel for
informing me of this problem.

After this commit if you have some text selected and you press Home
with a Shift key held down it will move the end of the selection to the
first character of the same line that the end of selection is on and if you
press End with a Shift key held down it will move the end of the selection
to the last character of the same line that the end of the selection is on.

I looked at how a bunch of different OS's and applications handled this
and found that there are a bunch of different behaviors we could use here,
and there doesn't appear to be any consensus as to what the "right" or
"wrong" way to do this is so please forgive me if this doesn't work exactly
as you expect it to.

Note that the implementation used here is very different from how BeOS
R5 worked. In BeOS R5 pressing Home or End with Shift held down
always extended the selection, it never subtracted from it.

In BeOS pressing Home with Shift held down extended the selection from
the left-most part of the selection to the first charcter of the same line.
Pressing End with Shift held down extended the selection from the
right-most part of the selection to the end of the same line.
2014-07-24 11:06:18 -04:00
John Scipione 1d1e61bb39 TextView: include re-arrange style fix
* Put #include TextView.h first as our style guide suggests.
* Put #include <new> in it's own C++ includes section
* also remove an extra newline
2014-07-24 11:06:12 -04:00
John Scipione b55f61d65c TextView: update comments
Private Method docs are/should be in doxygen format. Remove \brief as doxygen
doesn't need this if you document along side the method.

Remove brief description comments from public methods, you'll need to look in the
Haiku Book for this now.

style squash
2014-07-24 11:03:56 -04:00
John Scipione 1f424632be Style fixes to IK, focus on docs 2014-06-13 17:27:01 -04:00
John Scipione f5c284eeed Style fixes to BTextView 2014-04-02 19:38:25 -04:00
John Scipione 77acb43273 TextView: Remove Cmd+Up and Cmd+Down Shortcuts
to go to the beginning and end of the document.
2014-02-01 11:04:34 -05:00
John Scipione 0875173246 TextView: Update nav shortcuts again
Make Cmd+Left and Cmd+Right work the same as Option+Left and
Option+Right, that is, they do word-wise navigation.

Make Option+Up go to beginning of paragraph and Option+Down go to end
of paragraph like Cmd+Left and Cmd+Right used to.

Unfortunately option shortcuts are currently eaten by S&T until #9431
gets fixed.
2014-01-31 18:30:07 -05:00
John Scipione eb774c2948 TextView: Update navigation shortcuts
* Command+Left goes to beginning of line, ignoring softwrap
* Command+Right goes to the end of line, ignoring softwrap
* Home goes to beginning of line, accounting for softwrap
* End goes to end of line, accounting for softwrap
* Option+Left goes to previous word
* Option+Right goes to next word
* Command+Home and Command+Up go to beginning of document
* Command+End and Command+Down go to end of document

Shift with any of the above also selects the text.

This is similar to how the text editor Eddie works.
2014-01-30 19:48:31 -05:00
Siarzhuk Zharski 7f94398c21 TextView:Restore caret offset on B_HOME/B_END in R/O mode
Handling Ctrl-Home / Ctrl-End shortcuts in non-editable mode left the
caret offset unchanged. That provoked stuck of the page scrolling mode.
Reset the caret offset on such actions. Fixes #9407.
2013-10-26 23:02:18 +02:00
John Scipione ab21cedcce Remove docs and refactor style of TextView class.
* Make pointer style consistent, const char* name instead of const char *name.
* Lots of parameter renaming.
* in parameters don't get anything special, just font, or length instead of
  inFont, inLength.
* out parameters get a leading _ so *outWidth becomes *_width for example.
* We don't detail private function in the Haiku book and this class has a bunch
  so keep the documentation in the file but use regular comments instead.
* Normalize the parameter names between cpp file and header.
* Some minor whitespace fixes.

No functional change intended.
2013-03-16 17:05:09 -04:00
Przemysław Buczkowski dc871e324d TextView:Cmd/Ctrl-Home/End Shift-selection support
Fixes #6859

Signed-off-by: Siarzhuk Zharski <[email protected]>
2013-01-14 21:10:21 +01:00
Siarzhuk Zharski 74f911be74 Gently guessing prev. line caret pos on UP_ARROW
Fixes #3656
2012-12-16 20:29:04 +01:00