Commit Graph
55 Commits
Author SHA1 Message Date
Jérôme Duval 5b349aa267 BTextControl::SetValue():
* IsFocus() always returns false, use the textview instead.
* Use SelectAll on the textview, when it has the focus (like in MakeFocus()). This fixes bug #6703.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38900 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-08 21:05:05 +00:00
Clemens Zeidler 5096093590 Remove B_NAVIGABLE flag from main view after setup the child text view that use the flags from the main view. Fix #6431.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-04 01:38:44 +00:00
Alex Wilson 5c47e35e2a Updated BTextControl and its custom BLayoutItems. Also a bit of style cleanup. Broke up BTextControl::_InitData() method into _InitData() and _InitText() and moved initialization of the BTextView there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-27 22:16:46 +00:00
Stephan Aßmus c944d11f7e bonefish+stippi:
All views which cache layout information need to call ResetLayoutInvalidation()
when they have updated the cached information. Otherwise calling
InvalidateLayout() once they are already attached to a layout may not have any
effect.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-13 13:36:49 +00:00
Stephan Aßmus 84b7e12232 Both BTextControl and BMenuField layout the inner control at divider
+ frame width. BTextControl was even calculating it like this everywhere,
but then layouted like BMenuField. Now it's consistent and much easier to
align other controls with the text view or menu bar layout item.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30190 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 09:38:03 +00:00
Rene Gollent c121b41fd2 Make gcc4 happy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 23:50:20 +00:00
Rene Gollent 2a30a9e9f1 Implemented BTextControl's string "Value" property. This fixes ticket #3494.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29982 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 22:10:41 +00:00
Rene Gollent 4438cb3b69 Prevent BTextControl from eating scripting messages it doesn't handle (though it doesn't currently handle any). Updated TODO note to clarify this. Fixes ticket #3494.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-28 19:59:16 +00:00
Stephan Aßmus 2f86ba4557 Implemented a new look for the Haiku interface controls. It was
overheard that they looked too ninety-ish.
TODO: The code behind this is work in progress. The basic idea
is to extract all drawing code into a new class BControlLook,
of which there is a global instance be_control_look, instantiated
in InterfaceDefs.cpp. At the moment, all the old drawing code is
still there, and the usage of be_control_look is inside if-bodies
checking the instance against NULL. In another words, by not
instanitating be_control_look, you can revert back to the old look.
BControlLook's job is to provide reusable methods for drawing
certain types of frames, backgrounds and labels, so that application
developers can make controls that re-use the same drawing code
as built-in controls and adopt to changes made there. I have added
the notion of "borders". Each of the frame drawing methods can be
made to draw certain borders only, which is supposed to help when
controls shall visually attach. This feature is not fully explored
at all ATM.
TODO: Update BColumnListView header view and BStringItem text
spacing. Update other apps where it makes sense to use BControlLook.
For the moment, only Tracker and LaunchBox are updated. More...
NOTE: The new look is not very radically different, so that existing
apps do not immediately look too ugly or out of place.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29221 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 18:23:19 +00:00
Jérôme Duval c80f8962e7 Should fix Shift+TAB on text controls, as it was broken since r29028. Noticed by Karsten Heimrich.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-04 23:03:40 +00:00
Jérôme Duval 73161598d7 * BTextControl is kept navigable to be handled correctly by BControl::SetEnabled(). MakeFocus() transfers anyway the focus on its textview.
* BControl::SetEnabled() now calls SetFlags(), BTextControl::SetFlags() is then correctly called.
* BControl::SetEnabled() now uses fWantsNav to know if B_NAVIGABLE should be restored


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29028 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-25 22:18:44 +00:00
Oliver Tappe 39fbf5509b bonefish + zooey:
* Fixed a general problem with respect to overriding of the reserved
  virtual function slots: instead of statically invoking the method
  that corresponds to the reserved slot on the class that contains the
  slot, we now invoke the virtual Perform() method. Perform() then dispatches 
  the method invocation to the "proper" class, i.e. the highest class in the 
  hierarchy that  actually implements the requested method.
  This fixes a crash in apps that use liblayout's MSlider class and
  should fix one or other spurious bug with old apps or libraries, too.
* added new header folder 'binary_compatibility' that contains files that
  define the method codes and data structures required by Perform()
* looked for and implemented all used reserved virtual slot functions to
  invoke Perform() where necessary or to pass on the method call statically
  (for slots that were already maintained by Be)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-15 09:29:06 +00:00
Stephan Aßmus 53aaed9f6b Forgot to delete fLayoutData in destructor.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27669 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 15:29:02 +00:00
Stephan Aßmus 1aaf53ecac I accidentally removed some backwards compatible behavior. When there is no
label, a TextControl maintains it's current width in ResizeToPreferred() if
it is wide enough. Should fix #2751.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-20 10:46:09 +00:00
Stephan Aßmus 349c911ee9 * Implemented a lot of layout related methods and resolved a few TODOs by
doing a lot of these things the same way as BMenuField are already doing.
  Perhaps a private helper class could be refactored from these two controls
  to avoid duplicating a lot of this code, although there are a few subtle
  differences here and there.

These changes make a BTextControl behave properly in the layout management
frame work, in case CreateLabelLayoutItem() and CreateTextViewLayoutItem()
are _not_ used to layout the BTextControl.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-16 10:50:31 +00:00
Stephan Aßmus 93ba577c3e * Updated header indentation
* Removed unused fClean member
* Got rid of fSkipSetFlags member by simply calling the BView::SetFlags()
  directly where fSkipSetFlags was supposed to prevent the custom
  implementation.
* Added some debugging facilities.
* Used the layout friendly constructors of BControl where appropriate.
* Used B_FOLLOW_ALL for the child text input, it should be more correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27576 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-15 19:43:18 +00:00
Karsten Heimrich b257bb85e7 * partly revert, we need to keep the initial width
dont overwrite with preferred, it needs to called explicit



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-04 23:44:04 +00:00
Karsten Heimrich 1bdc2a5203 * ResizeToPreferred und GetPreferredSize now behave more closely to R5
this fixes mostly all windows containing TextControls in ArtPaint and
  should fix also ticket #2543

  ArtPaint was calling the BTextControl ctor with an empty rect, followed
  by ResizeToPreferred, which made in the best case the TextInput visible
  but it did not take the label into account. Should help more R5 apps.

  Some more tests on R5 have shown that even if you pass an extra large
  width, a call to ResizeToPreferred will not respect the passed width.
  Also the _BTextInput_ seems to grow with the length of the passed label.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-04 22:05:40 +00:00
Stephan Aßmus ee2a347385 Minor cleanup again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-15 13:22:29 +00:00
Axel Dörfler 991c062ff3 * Made the archive version of BTextControl::_InitData() more resistant against
a broken archive - it will now create a new _BTextInput_ child, if it couldn't
  find one. This fixes #2086.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25123 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 09:52:27 +00:00
Stephan Aßmus a68292dd29 fh -> fontHeight
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 22:35:30 +00:00
Stephan Aßmus b8872c02c1 BTextControl:
* Placed _BTextInput_ into BPrivate namespace.
* Made _BTextInput_::AlignTextRect() smarter, it centers the line vertically,
  for the case that the BTextControl has a larger label font. Improved insets
  for asthetics.
* Used _BTextInput_::AlignTextRect() consistently in BTextControl, no more
  custom calls to SetTextRect(). Account for minimum vertical inset of 2
  pixels in GetPreferredSize().
* Consistendly select all text when gaining focus in _BTextInput_.
* Override MouseDown() in case the control did not have focus before, or else
  BTextView::MouseDown() will deselct the text again and place the cursor.
  (in line with BeOS behavior)
* Removed unused fBool member from _BTextInput_ and other cleanup.

BTextView:
* Reimplemented BTextView::_AutoResize() so that it works well with
  BTextControl and autoscrolling when the alignment is not B_ALIGN_LEFT.
  I needed two new members for this, fLeftInset and fRightInset which are
  the original insets from the fTextRects. It might currently be broken
  for renaming things in Tracker, I will have to check. _AutoResize() no
  longer messes up the fTextRect insets.
* Fixed stray carrets sometimes being left over, mostly when auto scrolling,
  but I observed them in other cases as well.
* Prevent negative scrolling offsets when autoscrolling. Fixes weird scrolling
  offsets when navigating to the left.
* Reset scrolling to B_ORIGIN when SetText() is called. Fixes for example
  starting to type in the middle of the control in Vision when entering new
  text and autoscrolling was triggered before.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 20:39:29 +00:00
Karsten Heimrich ed1c257ade * the divider width was taken from the wrong archive field
- this is my first commit, so i'm really looking forward to work with you guys    :)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 22:42:51 +00:00
Stephan Aßmus 2c5a88945e fix more glitches:
* invalidate the correct rect on WindowActivated() in case fDivider is not
  correclty maintained
* don't cut off part of the label in Draw() by constraining the clipping in
  case the placement of the label is a little different than intented


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-01 13:33:51 +00:00
Stephan Aßmus a431f44be8 * make the text view layouting more robust, draw the frame around the
text view, ignore the divider for this (application code could layout
  the textview itself, and fDivider might not be maintained)
* change Draw() and TextInput::MakeFocus() accordingly

this fixes the weird placement of text controls in Beam


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-01 12:51:59 +00:00
Ingo Weinhold 9ecf9d1c1d Merge from layout management branch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-26 16:21:15 +00:00
Jérôme Duval 3a543720c4 archives with BControl
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-08 13:26:55 +00:00
Stefano Ceccherini 47b3e74e2d reduced the padding for the border, which is only 2 pixels per side, not 4
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 19:56:33 +00:00
Stefano Ceccherini 71c3e4ad7d Fixed bug 516, worked some more on AutoResize() (which is still not correct, but improves the situation, looks like bug 161 wasn't completely fixed yet)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 18:08:35 +00:00
Jérôme Duval 11d7ecebd0 fixed some Archive() following stippi's path
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17188 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-21 11:21:53 +00:00
Stefano Ceccherini 7a25fcafda Constrain the clipping region before drawing the label. This fixes bug 232
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-04 19:38:18 +00:00
Stefano Ceccherini 111b4fbcaf BTextControl was filling some part of the inner BTextView with the view color, thus hidding the text. This fixes bug 161
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-20 22:09:39 +00:00
Axel Dörfler fa815db338 Followed Korli's suggestion and used noTint where possible.
BTW other controls should use the B_CONTROL_TEXT_COLOR as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16408 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-15 16:33:49 +00:00
Axel Dörfler c432fbbbb7 Now uses B_CONTROL_TEXT_COLOR to draw the label instead of just black.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16404 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-15 12:40:34 +00:00
Axel Dörfler aae7000d63 The previous fix also didn't work correctly; we can't use the text color used
in the BTextView as a base.
Instead we're now using the correct UI default colors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-13 00:55:00 +00:00
Axel Dörfler 12aefeb42a This fixes the text color when disabled; B_DISABLED_LABEL_TINT is darkening the
color, not lightening it, it's supposed to be used with the background color,
not the text color.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-13 00:34:10 +00:00
Axel Dörfler 79c35b3912 SetEnabled() didn't set the text view's colors correctly anymore; _UpdateTextViewColors()
asked for IsEnabled() before it was set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-12 01:23:30 +00:00
Axel Dörfler 3a3f6c1ee9 BTextControl::AttachedToWindow() set wrong colors in case the control was
disabled (unlike SetEnabled()). They are now both using the correctly working
_UpdateTextViewColors() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16333 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-10 15:28:49 +00:00
Axel Dörfler ffe72abd85 * Fixed BTextControl resizing (did not invalidate the border area before).
* Rewrote TextControl.h
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-10 14:22:33 +00:00
Stefano Ceccherini 0efe29e09d There is a FillRegion() call after all
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-09 12:04:18 +00:00
Stephan Aßmus dde10e4519 fixes for various controls to remove or show focus indication when the window active status changes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-06 13:46:50 +00:00
Axel Dörfler 455d1c46a6 * The text view now has a larger horizontal offset to look better.
* Since the text view doesn't necessarily occupy the whole text area anymore,
  we need to clear the area around it manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 19:57:18 +00:00
Axel Dörfler ee001e262a Made it a bit clearer that virtuals do not work in the constructor the way you'd think they do.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14866 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 13:29:07 +00:00
Axel Dörfler 105644bf32 * the text rect of the inner text view is now the same size as its bounds;
that's simplifies resizing and moving a lot (it's now working correctly).
* the inner text view is now only navigable if the text control should have
  been navigable.
* default text view inset is now (3, 3) - but this might be adapted by the
  total size of the control.
* the height of the control now takes the label into account - it may differ
  from the height of the text line.
* instead of computing the size again, the BTextControl constructor now
  just uses its GetPreferredSize().
* the label position now depends on the position of the text view.
* the inner text view is now centered vertically inside the BTextControl.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 13:25:10 +00:00
Stephan Aßmus 2e6a5805ba MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:30:53 +00:00
Stephan Aßmus 6d8d6cad9d Work in progress to improve BTextView and BTextControl. I don't know what _BTextInput_::AlignTextRect() was thought to do. Some of the fixes are Haiku specific and we need to make sure that we don't need them later on (flushing drawing commands).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-16 12:02:23 +00:00
Stephan Aßmus 7a70a2d6d6 This fixes the child text view re-layout, I didn't test on R5, but my changes make sense to me and are much simpler than what was there before. The BTextControl works now on Haiku, with some problems in the redraw code, that I'm pretty sure are related to our app_server.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-12 16:32:03 +00:00
Stephan Aßmus 28930a1240 small changes and fixes here and there
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-27 17:25:29 +00:00
DarkWyrm 918a22d990 BTextControl labels use the plain font, not bold :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-23 01:57:29 +00:00
Stefano Ceccherini 058691d409 Style changes, updated license header,
now uses the correct constants (B_FONT_FAMILY_AND_STYLE, etc.) instead of the numbers directly... tsk, tsk :)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9391 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 10:21:46 +00:00