History log of /haiku/src/kits/tracker/TitleView.cpp
Revision Date Author Comments
# 8446d3b9 13-Dec-2023 John Scipione <jscipione@gmail.com>

Tracker: Miscellaneous cleanup

Move DraggableContainerIcon out of ContainerWindow.cpp into new.
Move CompareLabels to Utilities.cpp

Rename fContainerWindowFlags to fOpenFlags. These are the flags set
by OpenContainerWindow to save and restore state and should not be
confused with the windowFlags that are passed to BWindow. There are
two sets of flags, which I'm calling openFlags and windowFlags.

Rename fUseLayouts to fUsesLayout and useLayouts to useLayout. Put
all the constructor created flags at the top.

"window" variable name is ok, we don't need to say "containerWindow".

Rename Addons to AddOns everywhere with a capital O.
Rename BuildAddOnMenu() to BuildAddOnsMenu() with an s.
Rename AttributeMenu...() methods to AttributesMenu...() with an s.
Rename SetUp...() methods to Setup...() with a lowercase u.

Replace a few instances of fPoseView with PoseView() inline in
BContainerWindow and BDeskWindow.

A few more minor fixes in BDeskWindow.

Replace BPoint(0, 0) with B_ORIGIN in Pose.h

Change-Id: If30803753b63b19e35f14c0f0c4e08111d0d0980
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7240
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 5c6208cc 17-Nov-2017 John Scipione <jscipione@gmail.com>

Tracker: Line TitleView up with scroll bar arrow

Make TitleView a few pixels shorter at the default font size so that
it lines up with the scroll bar arrow to its immediate right.

Note the font size used in the title view before and still is 9px
(12px * 3/4)

Make this the minimum TitleView height even for smaller font sizes
so that the title view never is shorter than the height of a
scrollbar button. Make the minimum font size for TitleView 8px
because 6px (8px * 3/4) was just too small to read.

As font size is made larger it will increase the height of the
titlebar to accomodate the increased font size and consequently no
longer line up with the scrollbar arrow.

The code to scale the bar height via the font height was taken from
BColumnListView. The code to position the title in the middle of the
title bar was also taken from BColumnListView.

Some included style fixes:
* Rename height to fontHeight
* Rename loc to titleLocation
* 80 column limit


# 9bd7e401 07-Mar-2016 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Restore original PoseView/TitleView names except in BFilePanel.

Should've fixed #12635, but it doesn't. No idea why; perhaps
request.AddSpecifier("Window", "/boot/home/Desktop");
doesn't work anymore?


# 678f8a7b 05-Jan-2016 looncraz <looncraz@looncraz.net>

Tracker: Fix column title colors following Set*UIColor merge.

Repair regression where low color for text drawing was not set properly.
Do not use tinted color for default color state.

Prior to this, the hinting font would not respond to being pressed and the
column title background was the wrong color initially, but correct after
resizing (but then wrong again after a redraw on exposure).

In addition, the initial tint values used for the view color were unused,
so I removed them.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# c5b4dc40 09-Dec-2015 looncraz <looncraz@looncraz.net>

Tracker: Use Set*UIColor, improved font awareness.

InfoWindow now uses the font size to determine the window size and
placement of elements. Also uses system colors, including link
colors. Permissions view not font sensitive yet.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Patch 0039 from looncraz, unmodified.


# 408a2da5 10-Nov-2015 John Scipione <jscipione@gmail.com>

Tracker: Set low color before drawing column name

Fixes #12084


# d8b517b5 09-Sep-2015 Axel Dörfler <axeld@pinc-software.de>

Tracker: made title view height depend on font size.

* It now uses a font that's 3/4 the size of the plain font; ie. there
shouldn't be any change with the default font size.
* Also cleaned up some weird layout code on the way.


# 060bd5eb 02-Jul-2015 Philippe Saint-Pierre <stpere@gmail.com>

Tracker::BTitleView, Init fPreviousLeftClickTime

CID 1273731


# 8083e779 29-Jun-2015 Philippe Saint-Pierre <stpere@gmail.com>

Use B_CONTROL_HIGHLIGHT_COLOR to draw outline

In Tracker's TitleView, use an user defined color to draw outline when
moving columns rather than hardcoded color.


# 9a36a4c8 14-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete non-BControlLook drawing code.

This will result in changes to generated assembly, but should not
result in a functional change of any kind.


# e7803cf1 26-Jan-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: use the Layout API wherever possible.

Sorry this commit is so big, but I couldn't figure out how to do this
incrementally without breaking things.

I wasn't able to just merge Aldeck's branch, as it was a partial refactor
of Tracker and didn't just rewrite the UI creation code to use layouts,
and the changes for PM (e.g. addon loading, virtual directories) made it
very hard to merge (it doesn't even compile after an automerge) so rather
than spending time on that, I decided it'd be better to recreate his work.

Miscellaneous notes:
- This partially cleans up BPoseView & subclasses and BContainerWindow &
subclasses -- none of the subclasses and child views abuse the parent's
state, child views, or layout now.
- BFilePanel and BDeskWindow are not on layouts, because:
* BFilePanel docs in the Be Book instructed developers that wanted to
modify BFilePanel's layout to just use FindView() and then move the
views around. Obviously making it use layouts will break all BeOS
apps that do this, and there are a lot of them (Pe, WonderBrush are
just two examples.) I've added a note to the TODO list for R2 to create
a layout-compatible API for this.
* Some replicants (Workspaces, for example) rely on manipulating
BDeskWindow's drawing state. This is incompatible with layouts, as
at least in the case of Workspaces, it breaks a layouted version
of BDeskWindow entirely.
- I noticed a lot of #ifdef BEOS_VERSION ... gunk in the code. Tracker
probably didn't build on BeOS just before this commit, and now it
won't for sure, so I intend to go through and clean that out in the
near future.

This commit also fixes:
- enhancement #4996 (make Tracker's navigator use vector icons)
- bug #3039 (resizing OpenWithWindow flashes the blue border)
- bug #3889 (OpenWithWindow redraw errors)
- a regression that was a side effect of "dynamic_cast<BDeskWindow*>(this)"
always returning NULL when run in the constructor. I just added a "bool
isDeskWindow" to BContainerWindow's constructor that is only set to true
by BDeskWindow.
- a copy&paste error in VirtualDirectoryPoseView that was passing "uint32
resizeMode" as "uint32 viewMode".

Thanks to Alexandre for his original branch (it was a very useful
reference), Axel (for some miscellaneous advice & encouragement),
Adrien & Humdinger (for user interface review), and Diver (for user
interface review & testing).


# 9cc03189 28-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Add NULL checks and ASSERTs

To prevent recoverable NULL pointer dereferences. Dereferencing a
NULL pointer is undefined behavior and should be avoided.

Unrecoverable NULL checks will be dealt with in the next commit.


# 54e2dd72 28-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes

No functional changes intended.


# 6d4e243a 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to TitleView


# 898f1082 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Add SecondaryMouseButtonDown method

Create this utility method in Utilities.cpp and use it elsewhere tell if the
secondary mouse button is pressed or if it is emulated with a control-click.


# db416834 02-Jan-2013 Matt Madia <mattmadia@gmail.com>

Automatic whitespace cleanup. No functional change.


# ea001e58 28-Jul-2012 John Scipione <jscipione@gmail.com>

Round 2 of style changes to Tracker

* focused on 80-char limit fixes.
* also some whitespace and case statement indentation fixes


# b05aa8b5 27-Jul-2012 John Scipione <jscipione@gmail.com>

Style changes in Tracker, no functional change.

Manual whitespace cleanup
Change instances of const char * to const char*
Convert /* */ C style comments to // C++ style comments


# eb7595eb 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

CID 1457 : dead code (we know pressed is true at this point).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38148 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 769912c8 16-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Use the new cursors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35891 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f207162e 02-Jul-2009 Alexandre Deckner <alex@zappotek.com>

* In single window navigation mode, when navigating into a directory which had no viewstate yet (new folder) or if
fViewState didn't change, fTitleView wouldn't be reset and updated to the new column set. (unfortunately the column
state is managed separately from the rest of the view state). That would cause crashes for example when switching
to a directory with fewer columns and triggering a redraw of a column that shouldn't be there anymore.
Fixes #3710.

* TitleView::Reset didn't invalidate the view and would leave the old columns there until a redraw was
triggered externally.

* Minor cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31378 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f86ba45 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

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


# f7deaad7 21-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

If Moved() has been called, Clicked() can't be called anymore; this actually
fixes a crashing bug when dropping a column too fast.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22032 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27eab79b 20-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* BTitleView now resizes its columns asynchronously. As a side-effect, this
also solves the slow resizing part of bug #160 under Haiku (where GetMouse()
obviously gets a lot more messages).
* Rearranged the interaction between BTitleView and ColumnTrackState a bit,
removed some unused cruft.
* PoseView::ResizeColumn() had obviously required code to redraw the resizing
lines on enlarging the column excluded for whatever reason.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f9f5e4e 04-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Fixed warning.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c7b650c8 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

* because of my last change, the background was filled even though the app_server already did it


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17603 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56cedb9e 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

sync to OT repository, simplify drawing code and remove dark edge at first attr column

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a615ec8f 30-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Imported OpenTracker-current.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15764 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 02be5353 22-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added libtracker.so to the repository and the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12772 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d8b517b50f1a5a04e959ec2bfb0011b07f931793 09-Sep-2015 Axel Dörfler <axeld@pinc-software.de>

Tracker: made title view height depend on font size.

* It now uses a font that's 3/4 the size of the plain font; ie. there
shouldn't be any change with the default font size.
* Also cleaned up some weird layout code on the way.


# 060bd5ebb90457dadda1dc17d42ada632faa00c6 02-Jul-2015 Philippe Saint-Pierre <stpere@gmail.com>

Tracker::BTitleView, Init fPreviousLeftClickTime

CID 1273731


# 8083e779cf0195e321a09a4ea96958fbab54fa04 29-Jun-2015 Philippe Saint-Pierre <stpere@gmail.com>

Use B_CONTROL_HIGHLIGHT_COLOR to draw outline

In Tracker's TitleView, use an user defined color to draw outline when
moving columns rather than hardcoded color.


# 9a36a4c8dc242b16bbc61761833bd52680f225ac 14-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete non-BControlLook drawing code.

This will result in changes to generated assembly, but should not
result in a functional change of any kind.


# e7803cf1f69a81b1c77880518ba16b6708c1efdb 26-Jan-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: use the Layout API wherever possible.

Sorry this commit is so big, but I couldn't figure out how to do this
incrementally without breaking things.

I wasn't able to just merge Aldeck's branch, as it was a partial refactor
of Tracker and didn't just rewrite the UI creation code to use layouts,
and the changes for PM (e.g. addon loading, virtual directories) made it
very hard to merge (it doesn't even compile after an automerge) so rather
than spending time on that, I decided it'd be better to recreate his work.

Miscellaneous notes:
- This partially cleans up BPoseView & subclasses and BContainerWindow &
subclasses -- none of the subclasses and child views abuse the parent's
state, child views, or layout now.
- BFilePanel and BDeskWindow are not on layouts, because:
* BFilePanel docs in the Be Book instructed developers that wanted to
modify BFilePanel's layout to just use FindView() and then move the
views around. Obviously making it use layouts will break all BeOS
apps that do this, and there are a lot of them (Pe, WonderBrush are
just two examples.) I've added a note to the TODO list for R2 to create
a layout-compatible API for this.
* Some replicants (Workspaces, for example) rely on manipulating
BDeskWindow's drawing state. This is incompatible with layouts, as
at least in the case of Workspaces, it breaks a layouted version
of BDeskWindow entirely.
- I noticed a lot of #ifdef BEOS_VERSION ... gunk in the code. Tracker
probably didn't build on BeOS just before this commit, and now it
won't for sure, so I intend to go through and clean that out in the
near future.

This commit also fixes:
- enhancement #4996 (make Tracker's navigator use vector icons)
- bug #3039 (resizing OpenWithWindow flashes the blue border)
- bug #3889 (OpenWithWindow redraw errors)
- a regression that was a side effect of "dynamic_cast<BDeskWindow*>(this)"
always returning NULL when run in the constructor. I just added a "bool
isDeskWindow" to BContainerWindow's constructor that is only set to true
by BDeskWindow.
- a copy&paste error in VirtualDirectoryPoseView that was passing "uint32
resizeMode" as "uint32 viewMode".

Thanks to Alexandre for his original branch (it was a very useful
reference), Axel (for some miscellaneous advice & encouragement),
Adrien & Humdinger (for user interface review), and Diver (for user
interface review & testing).


# 9cc03189faa3cb4923d63a897435f56ec98c62b0 28-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Add NULL checks and ASSERTs

To prevent recoverable NULL pointer dereferences. Dereferencing a
NULL pointer is undefined behavior and should be avoided.

Unrecoverable NULL checks will be dealt with in the next commit.


# 54e2dd7272db551cab02cc678bd45bc4131dd867 28-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes

No functional changes intended.


# 6d4e243a8465f937c43965a1fab0681ddb049b56 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to TitleView


# 898f10825072bb17badf64bae8d7334e63a6a683 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Add SecondaryMouseButtonDown method

Create this utility method in Utilities.cpp and use it elsewhere tell if the
secondary mouse button is pressed or if it is emulated with a control-click.


# db41683495bfde817554415d14ae6f9cc91e77eb 02-Jan-2013 Matt Madia <mattmadia@gmail.com>

Automatic whitespace cleanup. No functional change.


# ea001e585a588e40404945a1201821da893d2e09 28-Jul-2012 John Scipione <jscipione@gmail.com>

Round 2 of style changes to Tracker

* focused on 80-char limit fixes.
* also some whitespace and case statement indentation fixes


# b05aa8b5b16e5b4f420a35c37805c6387df98737 27-Jul-2012 John Scipione <jscipione@gmail.com>

Style changes in Tracker, no functional change.

Manual whitespace cleanup
Change instances of const char * to const char*
Convert /* */ C style comments to // C++ style comments


# eb7595ebbd1e0e7d947fc032c2f3c95c63a97984 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

CID 1457 : dead code (we know pressed is true at this point).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38148 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 769912c87be29eafaffd8747237da998b0713ecb 16-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Use the new cursors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35891 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f207162e07a31027a36feebf6053adce962f2562 02-Jul-2009 Alexandre Deckner <alex@zappotek.com>

* In single window navigation mode, when navigating into a directory which had no viewstate yet (new folder) or if
fViewState didn't change, fTitleView wouldn't be reset and updated to the new column set. (unfortunately the column
state is managed separately from the rest of the view state). That would cause crashes for example when switching
to a directory with fewer columns and triggering a redraw of a column that shouldn't be there anymore.
Fixes #3710.

* TitleView::Reset didn't invalidate the view and would leave the old columns there until a redraw was
triggered externally.

* Minor cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31378 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f86ba45579bdc9648b232175f87edc62ab71b54 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

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


# f7deaad7ee0b8bcbf56a5c05894d8ba60169210a 21-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

If Moved() has been called, Clicked() can't be called anymore; this actually
fixes a crashing bug when dropping a column too fast.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22032 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27eab79b5608ece9dcef5066b97364844510f2d2 20-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* BTitleView now resizes its columns asynchronously. As a side-effect, this
also solves the slow resizing part of bug #160 under Haiku (where GetMouse()
obviously gets a lot more messages).
* Rearranged the interaction between BTitleView and ColumnTrackState a bit,
removed some unused cruft.
* PoseView::ResizeColumn() had obviously required code to redraw the resizing
lines on enlarging the column excluded for whatever reason.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f9f5e4e6368eb4b6a9214fee8dec3e298c5c352 04-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Fixed warning.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c7b650c800f3bd1539361494fa044cf299c1b868 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

* because of my last change, the background was filled even though the app_server already did it


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17603 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56cedb9e81c04c89ff4ad7a538d2f21b502f4331 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

sync to OT repository, simplify drawing code and remove dark edge at first attr column

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a615ec8f86406c14607c656cf90492bc58bd73d0 30-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Imported OpenTracker-current.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15764 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 02be5353fd41ea40007a382e13f007eaf6b5a3a0 22-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added libtracker.so to the repository and the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12772 a95241bf-73f2-0310-859d-f6bbb57e9c96