History log of /haiku/src/kits/tracker/PoseView.cpp
Revision Date Author Comments
# 9931e8ee 09-Feb-2024 nep <nep-git@packageloss.eu>

rgb_color: Add new APIs: Contrast(), IsLight(), IsDark()

- Remove perceptual_brightness
- Change implementation of rgb_color::Brightness() to the previous BPrivate::perceptual_brightness()
- Introduce convenience methods Contrast(rgb_color), IsLight() and IsDark()

Change-Id: Id677d4a32ce43d73bffecf9baf8cffaafb01a16d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7399
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 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>


# 90510b4a 05-Dec-2023 John Scipione <jscipione@gmail.com>

Tracker: Remove Trash settings remnants

PoseView.cpp changes
* Create DoDelete() and DoMoveToTrash() convenience methods in BPoseView.
- Call DoMoveToTrash() in B_DELETE handler checking Shift.

Tracker: Update Delete warning dialog

This dialog pops up when you Move to Trash with Shift held down.

The Skip Trash version has been deleted since we've decided to
no longer using this settings.

Push Cancel button over to right on the "Delete files" version.

Handle default case in switches so that a weird value is returned it
will Cancel. If BAlert receives B_QUIT_REQUESTED it returns -1 for
example according to the Haiku Book so make sure to handle this case.

Add B_CLOSE_ON_ESCAPE flag and handle that case.

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


# 9bc1ff61 30-Nov-2023 John Scipione <jscipione@gmail.com>

Tracker: Allow Get info without selection in File menu

If you don't have a selection, Get info on the window instead.

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


# ac83e7f0 23-Nov-2023 John Scipione <jscipione@gmail.com>

Tracker: Fix CanEditName() crash (from hrev57402)

Although I can't reproduce this crash, from the looks of the crash
report something in the CanEditName() method is throwing a
segmentation fault.

If selection count is not 1, don't even try to get the selection,
Edit name is not allowed unless you have a single item selected.
Double check that selected item is not NULL before using it.

I refuse to believe that fSelectionList being NULL is the problem
here, more likely fSelectionList->FirstItem() is NULL and is the
cause of the crash. Bailing out after checking that selection
count is 1 should ensure that FirstItem() is not NULL.

Hopefully fixes #18684

Change-Id: Ib99192178fa6f6d31b389afb47e72c5513e6e1c6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7139
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 32d1cd8e 24-Nov-2023 John Scipione <jscipione@gmail.com>

Tracker: Fix regression Copy To writable volumes

Regression was introduced in hrev56978 (Tracker read-only patch)
after R1B4.

This check is bad on Copy To/Move To operations because destWindow
is same as source window in these cases. This check only worked on
right-click drag Copy here/Move here since there is a separate
destWindow in this case.

Checking destFolder's volume read-only fixes the regression
because destFolder, unlike destWindow, should always be valid.

Fixes #18657

Change-Id: I4721bae34840d916e47f2a395d553e7254acaec5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7137
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# cf83394d 22-Nov-2023 John Scipione <jscipione@gmail.com>

Tracker: Put duplicate checks into convenience methods

... and a few minor feature updates.

Create a CanEditName method on PoseView because we were using
subtly different checks in different places to see if allowed
to edit the name or not.

Tint background color of the Edit name text box on read-only
to indicate that the file name cannot be edited (only copied).

Create ReadOnlyTint() method in Utilities and use it here and
in PoseView to set the background color. Eliminate BackTint()
method from PoseView which served a similar purpose.

Add CanMoveToTrashOrDuplicate() convenience method.
Move To Trash, Delete and Duplicate options use same check.

Context menu of selection in file panel gets Duplicate option,
window context menu never did so don't try to enable it there.

Change-Id: I7a82d00ea10f22a7885c2e898a809e1abe9a6b30
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7122
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 501aa0f3 22-Nov-2023 John Scipione <jscipione@gmail.com>

Tracker: Check selection parent is read-only on query

If 0 items are selected, check the window's volume instead.

If 1 item is selected, check if the parent's volume is read-only.

If multiple items are selected, consider the entire selection to
be read-only if any item's parent directory in the selection is
on a read-only volume.

You aren't allowed to for example Cut a selection that has an
item on a read-only volume as the Cut operation would not be able
to succeed. However, if all items in the selection are not on a
read-only volume then you may Cut.

For non-query windows assume all selected item's are on the same
volume and only check the first item when multiple are selected.

Fixes #18661

Change-Id: Ib898e54b62558c66aad65d33afd080480e312565
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7120
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: John Scipione <jscipione@gmail.com>


# 711b36b4 31-Aug-2023 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Merge SelectPosesListMode and SelectPosesIconMode.

There was a TODO comment about this, which dated all the way back
to the original OpenTracker import over 20 years ago.

There's still more cleanup needed, so I left another TODO.


# 18ee9c83 30-Aug-2023 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Add some missing includes.

These were implicitly picked up thanks to SlowContextPopup,
but that is about to change.


# 9c8f4ac5 07-Aug-2023 PulkoMandy <pulkomandy@pulkomandy.tk>

Remove usage of some deprecated C++ features

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


# 14a0c87f 06-Jul-2023 jiceland <jimmy_c@fastmail.fm>

Tracker: Set and clear background image when switching directories.

Fixes #15784 and #16436.

Change-Id: Ia9baff083b3a8d4f4e8c5314f12fafeef6d01f7a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6717
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 2b6ccde0 25-Apr-2023 John Scipione <jscipione@gmail.com>

Tracker: Disable edit menu items on ro volumes

... such as virtual directories or read-only media.
Also applies to open/save panels.

Menu items disabled on read-only volumes:
* New >
* Duplicate
* Move to Trash
* Move To >
* Cut
* Paste

Other reasons a menu item is disabled:
* Duplicate, Move To Trash, Cut, Copy, Move to >,
Copy to >, Create link > and Identify require a
selection.
* Paste requires something in your clipboard.
* Edit name requires a single item is selected.

Edit name is permitted on a read-only volume so
that you may copy the name. However the name is
not editable, you may only select and copy.

Pop system folder warning dialog on Edit name
commit instead, this way you won't see the dialog
if you just want to copy the name.

Move "Create link here" option last in the right-
click drag menu. Disable "Move here" if source or
dest is read-only, rest if dest is read-only.

Ignore Paste to virtual directory, (even more)
but permit Edit name.

Allow drag-and-drop to virtual directory but alert
and disable all right-click drag menu items like
other read-only directories.

Tint window backgrounds on all read-only windows
darker, not just on virtual and query folders.
Automatically switch the background color as you
navigate in and out of read-only folders.

Fix highlight color on column resize when background
color is not white. Fix "reverse video" effect so
that the highlight color is the inverse of the
background color. On Desktop however, highlight
color is always black or white.

Do not alter focus in save dialogs after initial
focus on the file name because focus on the pose
view is required for cut/copy/paste to work.

Make Edit Name work in file open/save dialogs and
make Cut/Copy/Paste work while editing file name.

Make Select all work in Edit name.

Duplicate code cleanup:

NameAttributeText::CommitEditedTextFlavor() and
HeaderView::FinishEditingTitle() call common
EditModelName() function in FSUtils.

RealNameAttributeText inherits from
NameAttributeText and calls its inherited
CommitEditedTextFlavor() method.

The alert text is defined in just one place in
FSUtils ShouldEditRefName() instead of three.
Consequently file name changed in the info window
can now be undone.

Change-Id: I3a78960057b8fb42d1f71af2ec3c808754c9b314
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6357
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# d34f1c40 02-May-2023 John Scipione <jscipione@gmail.com>

Tracker: Add BPoseView::CountSelected() method

Replace count variable with either selectCount
or poseCount depending on what is being counted.

Change-Id: I5e5caffd71bb932d93a822b28e73cdcfebff7135
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6399
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# b7dd18b2 02-May-2023 John Scipione <jscipione@gmail.com>

Tracker: Style fixes only

... including whitespace, brackets, rename loc to where or
location, add a pragma.

Replace min_c with std::min.
Replace BPoint(0, 0) with B_ORIGIN
Use make_color() function to make static rgb_color objects.

Change-Id: I47a4e5e5f0e7038643baca7539d211350bbb8f20
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6404
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# a63a6739 23-Apr-2023 John Scipione <jscipione@gmail.com>

Tracker: Whitespace, alphabetize style fixes

No functional change intended.

Change-Id: Ib47f6b04e372923a5d2a1774ce4e3f56d8b05792
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6370
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 147ca876 28-Jan-2023 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Drop ShowHideSelection setting.

Unused since the previous commit.


# 7255d288 28-Nov-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Do not try to change to an invalid or unset icon size.

This can happen if we are already at the largest or smallest size.

Fixes #18066.

Change-Id: Icf68627ea51a054dac806ec0c9258bc80c869483
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5840
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 95ca8eef 09-Sep-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Privatize most members of BPoseView.

Greatly reduces what is available to inherited classes.
No functional change intended.


# f61067a0 09-Sep-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Reset title view state after making column list empty.

Fixes #17899.


# 054c1b27 31-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Overhaul list column size initialization and storage.

Mostly for HiDPI, but this also cleans up the code in general, too.

* Apply a scale-factor when loading and serializing column size/offsets
in ViewState.

* Do not hard-code offset values for default columns but let
BPoseView::AddColumn() compute them manually instead.

* Change BPoseView::AddColumn() to support being called during
early initialization and utilize it in SetUpDefaultColumns...().

* When adding deserialized columns to a BPoseView, always realign
the offsets instead of just doing sanity checking. The rationale here
is that the first time the TitleView is touched, it will do this
anyway, and cause "snapping" or drawing glitches if the alignment
is not as expected.

If it was actually somehow an intended feature that non-adjacent
columns can be displayed, changes are needed in TitleView and PoseView
to properly support this without triggering redraw glitches.

I still saw some very slight redraw glitches (e.g. column contents
shifting by 1px) at higher font sizes; however, Tracker before this
commit had far more of those glitches (this commit seems to resolve
a number of them.)

Tested with 12pt, 18pt, and 20pt font sizes; this seems to work
pretty well. But if you see strange behavior or more redraw glitches
than there were previously, please do file a ticket.


# 509c951d 31-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Scale all icon sizes, not just the list icon size.

ViewState now always holds the unscaled icon size and PoseView
computes and caches the actual display icon size.

Anyone who used Tracker on HiDPI before this commit will likely need
to reduce the icon size on their desktops and any open windows.


# 0c973c94 26-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Refactor IconCache size handling and usages.

* Instead of taking an icon_size, which we were having to cast
random integers to anyway, just take a BSize and convert internally
as needed. This simplifies a lot of usages of IconCache methods.

* Compute what B_MINI_ICON size will be at startup. This way,
we do not wind up caching "mini" icons in the fLarge*Icon variables
under HiDPI.

This does have a downside that if anything actually
does try to fetch "true mini" (16x16) icons when the real
ComposeIconSize(B_MINI_ICON) is larger than that, it will wind up
(confusingly) in fLarge*Icon, but that should not cause problems
and after this commit should not happen at all, anyway.

* Make mini-icon-mode use ComposeSize instead of the hardcoded 16x16,
and adjust metrics computations around it.

* Fetch larger icons in MountMenu logic. Also use BString::SetToFormat.

* Remove an unused, deprecated method from BPoseView.

* Rename variables in thumbnail generation code to match new behavior.


# 50107f9f 20-Jun-2021 John Scipione <jscipione@gmail.com>

Tracker: fix last minute mini icon mode bugs

Pose::CalcRect() assumed top is at icon top in mini-icon mode. This
is not true for larger font sizes where the top of the text is above
the top of the icon. Calculate top and bottom based on font and icon
size matching the calculation in TextWidget::CalcRectCommon(). This
fixes a highlight redraw bug in mini icon mode at larger font sizes.

Push Edit name right 2px to match label position (in mini-icon mode.)

Round to integer to help with 1px off bug. Edit name box is still off
by 1px from the label for some font families and sizes.

Change-Id: Ibba897d6f3c7a879631adedada5cd59d2071191a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4204
Reviewed-by: John Scipione <jscipione@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 7912dad9 17-Jan-2021 John Scipione <jscipione@gmail.com>

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 <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 61282f95 10-Jan-2021 Adrien Destugues <adrien.destugues@opensource.viveris.fr>

Tracker: fix invisible selection text in disabled windows

Regression introduced in hrev54742 which used DeskTextColor() on a
non-desktop view. The view color isn't set anywhere in that case and
does not match the background color, which led to drawing white text on
a white background.

Moreover, a second bug was stacked on that: the selection is drawn in
"reverse video" (using the document color for the text and document text
color for the background) only for active windows. For inactive ones, it
is drawn normally, and then a middle-grey rectangle is alpha blended on
top. Add a comment to clarify that and reintroduce the ckeck that had
been removed.

Also replace the hardcoded black for the selection background, so it
will be more easily visible for people using dark mode.

Fixes #16627.


# 8a72ba1b 19-Dec-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Tracker: improve algorithm to decide desktop text color

Fixes #16673


# 10bc5b6e 05-Dec-2020 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Increase the readability threshhold to 50%.

nephele is working a more comprehensive fix to this code, but for now,
this seems to be sufficient for the time being.


# 7377c398 21-Nov-2020 Pascal Abresch <nep@packageloss.eu>

Tracker: make desktop color selection try user color first

Change-Id: I47392bdafe8ecf1996886fd0a8324a114f4524fd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3407
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 0404495f 26-Jan-2020 Murai Takashi <tmurai01@gmail.com>

tracker: Fix PVS V595

Add NULL check for 'ContainerWindow()', since it might return NULL.

Change-Id: I0a9e7243c6d23be7559331dcd72e0675eb44809e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2161
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# a6c8647e 18-Nov-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Tracker: list item height must be an integer.

The item height is rounded to the nearest integer when drawing, but it
is also used to compute an item position:
position in pixels = item number * height

If the height is not an integer, this leads to a rounding error, and
depending on how the items are drawn, some of them are shifted up by a
pixel because of it.

The fix is to round up the item height when it is first computed, and
then make all computations keeping integer values.

Fixes #16377.


# 77912444 05-Mar-2020 X512 <danger_mail@list.ru>

Tracker: fix ScrollIntoView

Same problem as in BListView::ScrollToSelection.

Change-Id: I1cd26190566b1808f47475c1499298b66549f024
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2312
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# df2e6c7a 06-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Force the horizontal scrollbar to always be the preferred size.

See inline comment. Should fix second part of #16368.


# f82f94ef 06-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Remove partial support for custom fonts in PoseView.

BFont is by default bitmap-spaced, so we do not need to make
a new font just to add bitmap spacing. The rest of the code
assumes in places that we have the same general characteristics
as be_plain_font anyway, so having these bits of code does
not make a lot of sense.

Also correct the list element height computation to now just use
be_plain_font directly, which will work even when this is the first
PoseView created (i.e. before the font height has been read.)


# 749fbae0 05-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Fix PoseView list item height computation.

This gets list item margins on HiDPI much closer to their standard-
DPI counterparts.

Fixes #16178.


# 17512090 10-Mar-2020 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Fix error in string.

Reported by a translator. Thanks!


# 1ba93961 07-Mar-2020 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Replace the deprecated std::hash_set with our HashSet.

Change-Id: I7d29f0c905a3ab1a20f6eca252ff1f168218c23f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2322
Reviewed-by: John Scipione <jscipione@gmail.com>


# 6bff9184 07-Jan-2020 X512 <danger_mail@list.ru>

Tracker: fix window focus behaviour

* Also fix LongAndDragTrackingFilter
Fixes #15605

Change-Id: I98c5f3ca435e54c98515ebe2fccbbfd5d08c1a25
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2081
Reviewed-by: Sergei Reznikov <diver@gelios.net>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# d2a69b8b 20-Aug-2019 Ryan Leavengood <leavengood@gmail.com>

Tracker: Improve pose loading speed, add comments

If a new pose is going to be placed below the current view bounds, we
definitely do not need to do any drawing. If it is above or inside the view
bounds we do this special drawing method.

Overall this method of doing updates is complicated and hard to adjust without
introducing drawing artifacts. As noted in the TODO, this should be rethought
from scratch.

But for now in one case of over 8000 files in a single directory this improved
the loading speed from about 8 or 9 seconds to 1. Queries results also load
much faster. I am testing in a VM with a single CPU on a host with an SSD, so
others may see better performance with more CPUs, or less with a spinning hard
drive.

But at least now the drawing won't be the bottleneck.

Should finally fully fix #3011, or at least good enough for close.

Change-Id: I3806ffa7674e404c9db24edb33d6ab4eb2d825f7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1726
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# ecba7b5c 01-Aug-2019 Ryan Leavengood <leavengood@gmail.com>

Tracker: Ensure loading the Node works before passing to a Filter

Checking errors is important. This properly fixes #10365 and resolves a few
TODOs.

This DirectoryFilter is also used in Expander, though with a lower level
implementation that did not trigger this bug. This feels like it could be
in the the Tracker or shared kit.

Change-Id: Icd2ddc241c1879a7c4235726bf089570ba00dc0a
Reviewed-on: https://review.haiku-os.org/c/1672
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 1705656e 24-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

Add (void*) casts to memcpy/memset invocations to appease GCC 8.

A lot of these classes are not *technically* "trivially copyable"
for one reason or another, but in all of these cases it seems
OK to me to use memcpy/memset on them. Adding a cast to void*
tells GCC that "I know what I'm doing here" and shuts up the
warning.


# a55e9f52 05-Nov-2018 Axel Dörfler <axeld@pinc-software.de>

Tracker: NavMenu icons scale with font size

* Moved icon size computation into separate utility function.


# fa584266 05-Nov-2018 Axel Dörfler <axeld@pinc-software.de>

Tracker: Simplified test; fColumnList cannot be NULL


# 6ccc2b9f 04-Nov-2018 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Add some missing NULL checks.

Fixes #14685.


# 0f03d737 04-Nov-2018 Axel Dörfler <axeld@pinc-software.de>

Tracker: List view icons now grow with font size

* This also removes the mini/large icon mode for list views; it's now
simply always matching your font size.

Change-Id: Ieedd86cc3a50dd0f950d97bbd9839384d44f8bd3
Reviewed-on: https://review.haiku-os.org/662
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 497f099f 16-Sep-2018 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Clean up AddPoses threads properly.

They may still be running at the point we detach from the window, and
as we stop watching everything else at that point (and the threads
themselves depend on the window looper as the global "lock"), we
need to tear them down then.

We especially cannot do this in the destructor, as there are some
virtual methods that the threads need during their teardown which
obviously will not work in ~BPoseView.

Fixes #13371, and potentially other Tracker crashes that occured
as a result of closing the window while the add-poses tasks were
still operational.

Change-Id: Ib7ec0d1d413096be899a05887399f5b087eb8f99
Reviewed-on: https://review.haiku-os.org/574
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 2d8adbdd 29-Apr-2017 Owen <owenca@users.noreply.github.com>

Tracker: Fix Shift+click multi-selection not being disabled.

Using BFilePanel with multi-selection turned off does not prevent
multi-selection by SHIFT-click. Traced the bug to
BPoseView::AddRemoveSelectionRange(), and the safest fix is to not
touching the boolean extendSelection but to just add the test for
fMultipleSelection to the if block that handles B_SHIFT_KEY.

Fixes #13462.

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


# 41b05954 28-Apr-2017 Owen <owenca@users.noreply.github.com>

Tracker: Fixed shift extension after keyboard selection.

fixes the bug that caused multi-selection by SHIFT-cliking to fail if an
item in the file panel was selected by a key (ticket #13460).

If the user tries to select a single item by pressing a key (Left/Right,
Up/Down, etc.), the BPoseView::KeyDown() function will call the
BPoseView::SelectPose() function, which must set fSelectionPivotPose to
the selected item (or pose) because this item might be the starting (or
pivot) pose of the next multi-selection by SHIFT-click.

Signed-off-by: Axel Dörfler <axeld@pinc-software.de>


# 54a37ee4 22-Apr-2017 Humdinger <humdingerb@gmail.com>

Tweak when to use black/white for icon labels on Desktop

I've felt for a long time that the Desktop's background colour had to
be much too dark for the icon labels to switch from black to white.
I came to the new values by trial and hope nobody hates those now...


# cfe0adf0 22-Oct-2016 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Remove unused definition.


# 13cf3fec 21-Oct-2016 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Remove unused Cursors.h header.


# 45e5951b 17-Oct-2016 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Fix the TitleView appearing sometimes in icon-view folders.

It appears this would only happen when opening a new window (not an
existing one) for a folder that was set to icon-view.

Regression from hrev48734 (Layout API commit). Fixes #13000.


# 8fdd2629 01-Sep-2016 John Scipione <jscipione@gmail.com>

Tracker: 32x32 icon size option in list mode

16x16 is same old default
32x32 is new and fun

Adjust start offset to depend on icon size

Remove the kColumnStart variable and instead use StartOffset()
method which calculates the column start offset based on the icon
size. When you switch between icon sizes in list mode recalculate
the first column width to make room for the icon or more text.

Add some padding to list height in large icon mode.


# b339ee18 02-Sep-2016 John Scipione <jscipione@gmail.com>

Tracker: Make mini mode default for list mode

but if you are in icon mode (like Desktop) use large icons instead.

This change will be important going forwards.


# ee20ff95 01-Sep-2016 John Scipione <jscipione@gmail.com>

Tracker: Style fixes

More style fixes


# c1cd54a0 21-Jul-2016 Augustin Cavalier <waddlesplash@gmail.com>

FSUtils: Add a "bool copyTimes" argument to FSCopyAttributesAndStats().

BPoseView::NewFileFromTemplate does not want to copy the times. Fixes #11702.

We have to keep a 2-argument version of this function because it looks like
some third-party applications might call it (e.g. Dockbert), and even
though it's technically private API, it's easy enough to preserve binary
compatibility.


# e944daca 21-Jul-2016 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: Remove special filtering case from NewFileFromTemplate.

If the pose matches the current type-ahead filter, it will be added
by the node watcher anyway, so this just created duplicate poses
which messed up internal data structures. Fixes #11122.


# 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?


# 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.


# a89ac5a6 16-Dec-2015 Markus Himmel <markus@himmel-villmar.de>

Tracker: Add dragged poses to the drag message in the correct order

The function EachPoseAndModel iterates through poses in reverse order.
This fixes #12333.

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


# 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.


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

Tracker: Made list element spacing relative to font size.

* Instead of always adding two pixels, we now multiply the size with 1.1.


# 7cef8ca2 10-Aug-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Fix regression introduced in hrev49011.

If the view fails to lock because it is actually gone, we obviously
can't use it to return the container, so delete it directly in that
case.

Fixes #12072 and probably #11982 which would then be a duplicate.


# b46999bc 21-Jul-2015 Axel Dörfler <axeld@pinc-software.de>

Tracker: page down/up now selects poses.

* When pressing shift it will also extend the selection to the bottom
or the top of the page.
* It does not deselect anything yet, but Tracker's selection logic is
pretty questionable, anyway, and it's way too complicated to
implement this nicely as of now.


# 29355b23 17-Jun-2015 Janus <janus2@ymail.com>

Tracker: reduce distance between rows with big fonts


# 38b2eae6 14-Jun-2015 Janus <janus2@ymail.com>

Tracker: fix selection glitch with some fonts

* This problem was present for the fonts with total height
greater than 19 and smaller than 20.
* Reduce distance between row with big fonts.
* Fixes #11615.


# 37335989 26-Apr-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete more non-Haiku code.


# 2bd0b27f 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Fix use-after-free by ref filter of OpenWithPoseView.

Commit ea8b1e14 changed OpenWithPoseView from using ShouldShowPose for
filtering poses to a BRefFilter. The introduced ref filter used the
iterator handed to the BPoseView::AddPosesTask which took ownership
of that iterator and deleted it as soon as it was done. Since actually
adding the poses as well as further filtering is asynchronous and
happens after the AddPosesTask completes, the iterator was used after
it was already deleted.

Introduce BPoseView::ReturnDirentIterator() that is called after the
AddPosesTask is complete. The default version deletes the iterator,
the OpenWithPoseView overrides it and does nothing, it deletes the
iterator in the destructor instead.

Also fix leaking the ref filter. The BPoseView does not take ownership
of the filter as it usually comes from a BFilePanel which is documented
to not take ownership.


# 0a74a005 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Remove two outdated comments, whitespace cleanup.


# d854f235 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Remove an old PPC STL workaround.


# 4e357263 29-Mar-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: add "hide dotfiles" option to the GUI & enable it by default.

Changing this many lines of code to add a single boolean preference
is absolutely insane. We need a new preference-tracking system, and
one that can be reused in other applications, too.

Fixes #9200.


# 7ef62fb6 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Style fixes

* Style fixes to QueryContainerWindow.h
* Style fixes to ContainerWindow
* Style fixes to Model
* Style fixes to Tracker
* Style fixes to PoseView
- Most of the changes come from unindenting the code


# 8b03727a 28-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Revert "Tracker: Fix memory leak"

This reverts commit de7aed2b5671d54c3557fad447ba60ffe17ef9bb. It turns out
that this causes crashes when trying to navigate in directories with
type-ahead filtering enabled. (possibly related to the root cause of


# 9e78efbb 27-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete un-needed #includes.

All of these header files are already included by the .h file that
corresponds to the .cpp file.


# 7d515bdb 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: handle copying files from virtual directories

If virtual directory first resolve the symlink before copying/moving/linking the file.

Fixes #11091

R1/B1 bug squashed!


# 27c57467 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Move static functions up

Rename CopySelectionListToBListAsEntryRefs to CopySelectionListToEntryRefList
to reflect that it no longer copies to a BList but instead to a BObjectList<entry_ref>


# 4c47562f 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Minor style fixes to PoseView


# f0647531 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: link to TargetLibsupc++


# 370ee87a 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: replace max_c with std::max

Remove using statements and put map include in its proper place


# de7aed2b 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Fix memory leak

When items were removed from fFilteredPoseList as opposed to fPoseList, the
items were not automatically deleted and thus leaked. By setting the BObjectList
to automatically delete them on removal (by setting the deleteIfOwned paramete
to true) we avoid this leak.


# 8c2813c1 25-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Style fixes


# 5f26850c 25-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Small style fixes


# 2f5fe16a 14-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete #ifndef __HAIKU__ code.

Since tracker_layout has been merged, this is pretty useless now.
Should result in no change to generated assembly.


# 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).


# 529cd177 04-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

BFilePanel: allow to change the node flavors

There doesn't seem to be anything ini the implementation that would
cause a problem, as long as you don't try to change this while the
window is already open.


# 2f60dea5 29-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Throw exception on assert failure

... in situations where a NULL pointer dereference was vital to the
functioning of the method we use a stronger assert that throws an
exception on failure. This is accomplished by a new method in
Utilities.cpp, ThrowOnAssert().

None of these conditions should ever be true, if they are it means that
the code is written improperly and would have resulted in a NULL
dereference and undefined behavior (most likely a crash) before.

Most instances of ThrowOnAssert() either replace an ASSERT followed
by a dereference or an early return that covered the error.

Also remove _ThrowOnErrorWithMessage() which wasn't being used.


# 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.


# 95ef5405 25-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Unchecked dynamic_cast, CID 611229


# a35bd7b0 25-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Unchecked dynamic_cast, CID 600452


# 3aeed660 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 3188d3d0 23-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Remove logically dead code

Replace with an ASSERT that srcWindow != NULL by the time we've gotten
this far.

CID 1228649 and CID 1228650


# a892df23 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Fix several unchecked return values

CID611191, CID611192, CID611193


# 5969c5d7 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Fix use after free

CID510586


# 1933335b 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix 2 uninitialized scalers

CID610119


# ba24adb2 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix 2 unbounded copies

CID609045


# d308d1fa 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unchecked dynamic_casts

CID603130, CID603131, CID603132


# 62de0e04 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unchecked return values

Check that LockLooper() succeeds

CID611190, CID611194, CID602477


# dc3cfca4 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unused pointers

CID610474, CID610475


# 20e3467e 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix dereference after NULL checks

CID600503, CID600504, CID600505


# 0db0308b 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to PoseView.cpp

Compare with NULL explictly


# d5868b59 26-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to PoseView

Variable renaming for consistency and clarity


# d7e68211 04-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: miscellaneous style fixes


# 091db3a9 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Check if selectedPose is NULL

... before using it.


# 14bf930b 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Check if selectedBounds is NULL

... before using it.


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

Tracker: style fixes to PoseView class


# 9437e677 09-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Style fixes


# 9bd08d10 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Don't change selection if right-click

... inside a selection. If you click outside a selection extend the
selection to include the new items as Tracker normally would and
then pop up the dialogs.

Works with control-click as well, same utility function used.

Fixes #10449


# 80f4300a 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Make context menu work with control-click

in additional to secondary mouse button click, uses same utility function.


# 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.


# 6be6813f 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: swap using std::swap()


# fcb24e82 31-Jan-2014 John Scipione <jscipione@gmail.com>

Tracker: Only open items if doubleclick w/ primary MB

Also rename fLastClickPt to fLastClickPoint


# 9d33fe68 31-Jan-2014 John Scipione <jscipione@gmail.com>

Tracker: Style fixes to BPoseView


# 80c9ee9c 24-Dec-2013 Freeman Lou <freemanlou2430@Yahoo.com>

Tracker: exclude trash from selection.

Signed-off-by: Rene Gollent <rene@gollent.com>


# 1c29b26e 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add virtual directory feature to Tracker

Similar to stored queries, files of the virtual directory type behave
like directories -- i.e. they open in a list-mode Tracker window and
show up as an item with submenu in navigation menus. The file itself is
a plain text file in driver settings format. It can have an arbitrary
number of "directory" entries, which specify the paths of (actual)
directories for which the virtual directory provides a merged view. The
view will not show duplicate entries. For non-directory entries the
first one encountered (according to the order the directory paths are
specified in the file) will be shown. A subdirectory entry will again
behave like a virtual directory.

The support in Tracker isn't perfect yet. I'm afraid major refactoring
would be necessary to get it there.

The virtual directory file type uses a differently colored version of
the folder icon. Alternatives welcome.


# de85051c 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::AttributeChanged(): additional check in icon case

Model::AttrChanged() requires the model to be open and so does
IconCache::IconChanged(), so add the check. Not sure if the block is
ever executed now (or ever worked before). This does at least prevent
asserts being triggered when compiled with debugging enabled.


# ddd775f5 20-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::FSNotification(): fix issue in debug build


# 535207ae 19-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::AddPosesTask(): fix count checks

In case GetNextDirents() returned an error, the wrong blocks were
executed.


# a53db189 11-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix #9663.

When clearing the filter state, don't disable filtering entirely if we
have a ref filter present. Otherwise, it won't be invoked again
until the next time a typeahead filter is engaged.


# 163a3948 09-Feb-2013 Humdinger <humdingerb@gmail.com>

Revert "Renamed Tracker option "Don't move files to Trash" (#9352)"

This reverts commit 45f77dcd7029914ccd99178dfb333eb68c7af9e5.


# 45f77dcd 06-Jan-2013 Humdinger <humdingerb@gmail.com>

Renamed Tracker option "Don't move files to Trash" (#9352)

Renamed that option as it is the only negatively phrased to
"Move deleted files to Trash first" and also the option below
that to "Ask before deleting for good".
Also renamed every function name etc. in that regard and also
settings string of the Tracker settings file.


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

Automatic whitespace cleanup. No functional change.


# 205cf695 24-Dec-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Force Identify - don't require holding shift (#4857)

Don't require to hold shift when clicking on force identify,
can now be released after popup menu have appeared.


# 3fbf5d68 23-Dec-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Drawing artifact (#6513)

After switching from outline only selection mode to transparent rectangle,
a drawing artifact could occur because the last selection rectangle wasn't
reset properly. On following update, Tracker thought a selection rectangle
was still to be shown.


# dbe30881 25-Nov-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Tracker crashes in KeyDown() if there are no models associated with the PoseView.

Happens in special windows, such as OpenWith Window, that do have a PoseView not associated
with a model. Fixes #8160.


# 151b6997 15-Sep-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Moving columns could make an horizontal scrollbar appear


# ed63a5d2 18-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Double-Click simplification

Double-click check was redoing what is essentially already done in input_server.

The way we were doing it, right clicking (or pressing a different button for the second click,
for that matter) wasn't clearing the fields remembered and thus not breaking the sequence.
So a third click returning to the correct sequence (in a short time) would get recognized
as a valid second click. So a quick left-right-left would be seen by that method as left-left.

Also, clean up a previous fix I committed. Removed the introduced Origin() method as it
is the LeftTop() method I was interested in and it is already existing.

Fix #8714


# c3837537 14-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: TextWidget editing flaws

TextWidget tried to detect if the editing box would span outside the PoseView,
but it was using an hardcoded value of 1 for the minimum left value. But in Icon mode,
negative values can occur. Change to use the view's origin (top left corner of the view).


# 8cbdf82a 14-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Drawing glitch when created Pose is first in PoseView

Due to clipping of a rect to match the view bounds, there was a confusion
as to whether the rect was at the top of the view bounds, or above the view
bounds as both met the condition.

Fixes #8876.


# 7ad72ef6 12-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: avoid duplication of poses

When filtered, clear the FilteredPoseList before re-filling it.

Fixes #8875.


# 39433058 11-Aug-2012 Rene Gollent <anevilyak@gmail.com>

Fix ticket #8858.

- When an Identify/Force Identify request is made in Tracker, if the target
is a link, resolve it to its destination first. Fixes #8858.
- Have mime_update.sh explicitly mimeset the welcome/user guide scripts.


# c01e918c 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Cancel editing of Widget if sorting of poses occured.

Since the position of the widget was registered at the first click,
it likely changed and its causing drawing afterfacts (it's editing at
its old location).


# 66c09a35 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Delayed widget editing, crash avoidance

Make the PoseView stop watching a TextWidget if it's being deleted.
Could happen in race conditions for example, if you click to edit
the name widget of a pose while the pose is being deleted soon after.


# 4cf0af06 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Additional cases to cancel double-click detection

Don't wait for a potential second click (and then trigger Widget editing) when:

1. a click occurs on a different pose, on a 'pose-less' area or when right clicking
2. when you start dragging something.


# 741e5246 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Double-click management changes

Make the "second click of a double-click" detection waiting time async. In other words
(hopefully clearer), when the TextWidget gets a click, it register itself, recording the time,
and it will get the editing order later as a callback from PoseView when the delay without any
further click expires.

Fixes #8818 and maybe others.


# e0e641c0 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Style fixes, should have no functional change


# 11a36918 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView::AddPosesTask - no need to open the node at this point


# aafb6faf 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: crash related to PoseView containing many files

Due to a previous change in the incrementation of models in AddPosesTask,
PoseView containing large number of poses were prone to crash in ClearPoses().

Gaps in PoseList or other invalid memory area were introduced.

Thanks to x-ist for precious assistance in spotting those issues!


# 0bc1be32 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: Fix crash in FilePanel

Again, a regression fix. Under some circumstance, fFiltering was wrongly
set. Also, the node wasn't open before checking the BRefFilter and some
filters expected that to be.


# 5489384d 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: crash fix in FilePanel

Regression of hrev44493, file panel crashed when changing dir and
filtering being disabled (sorry!)

Also fix the widget editing when filtering is activated. Now renaming
a file/folder and causing it to 'fall off' the filter does work.


# c2535dc4 07-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: various issues regarding filtering

1. A BRefFilter-ed PoseView wouldn't keep monitoring files after its opening
thus not picking up files that happen to fit the filter thereafter (mime attr
updated, etc..)
2. A filtered PoseView wouldn't get updated when:
a) a column was added or removed
b) a file was renamed
c) a file was moved
3. Harmonize the way BRefFiltering and Type-ahead filtering are working. Both
can be used together.
4. The handler for AttributeChanged() wasn't working properly if link(s) of a
changed model was/were its siblings.
5. Broken links weren't detected/updated (it nows monitor the lost target
parent directory, and wait for the target creation to show the link fixed)

This is a big change (even more considering the 'critical-ness' of the component)
Testing is MUCH welcome!

Should fix #4254, #5381, #1717 (and maybe others)


# aed35104 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# adf8818e 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Compilation fixes for Terminal, add to image.

It runs, but has shown up various bugs: app_server crashes, kernel
panics, rendering problems. Working on fixing these now.


# 688e8788 28-Jul-2012 Ryan Leavengood <leavengood@gmail.com>

Don't check for double click if it was a right mouse click.

Fixes #8714.


# e51854a1 15-Jul-2012 John Scipione <jscipione@gmail.com>

Add 96x96 and 128x128 icon sizes to tracker including scaling of BeOS icons using scale3x and scale4x algorithms.


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

WIP: Yet more style fixes, mostly 80 char violations.


# 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


# b866f1fa 24-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Files created from templates are now monitored

fixes #2796.


# 4c45f003 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Right clicking on Pose triggered Rename prompts

Right clicking on a Pose to get the contextual menu would quite often
trigger a rename action of that pose. Don't allow to rename a pose
by releasing the secondary mouse button.


# fb678bc3 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Sorting in filtered view led to crash

Fixes #6992.


# c082e8f2 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Variation between Saved and Restored widths

When restored, an overlap was wrongly detected in offsets for
failure to take into account the width of the border line.

This was causing the horizontal scrollbar to show unnecessarily.


# 5cdd07a8 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Optimisation of AddonMenu menu construction

1. Build the list of mimetypes of files in selection only once and
reuse it for all further tests.

2. Fix a regression introduced in hrev44384 where the MimeType()
wouldn't get recognized when just changed by tracker (by that same
right click). It would be on subsequent clicks.

3. Rename the static map variable to better fit our coding style
and be more understandable.


# 516cac78 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Coding style violations fixes and typos

No functional changes, thanks Axel!


# 674ff0df 22-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Various sorting issues in Tracker

When sorting files by Modified dates, right clicking on a file was leading
to a sorting issue where files were changing positions (without reason).

1. Any changes to stats (size, modification, creation, mode) was triggering
the sorting. Now only stats fields currently used as a Sort criteria will
trigger such event.

2. The Mimeset of file was set (in case of unknown file format) once per checked
add-on when building AddOn Menu. Now it's checked once per file in selection.
(so, once per file, rather then once per file, per add-on).

3. Now rely on registrar to force the mimeset (to trigger the sniffer in case
the attribute already exist) rather than trying to duplicate the feature in Tracker.

4. When Sorting, if there is a old position known, check if it's working by looking
if you should come after the previous item, and before the following item. Previously,
the item would be pushed at the top if the group of item all fitting the criteria
(same file size, same file kind, etc.. depending on the sorting criteria).

Fixes #8478.


# 1236c746 21-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: a file leaving Trash won't appear in QueryPoseView

Fixing #1592.

A feedback FSNotification()->EntryMoved->PendingNodeMonitorCache->FSNotification
was seemingly introducing some race condition, as it was working 1 time
on several tries.


# 4dad975d 06-May-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Consider extra column margin in PoseView::Extent()

In List Mode, consider the extra margin added to the right of
the last column when computing the Extent of the PoseView. This
was causing the ResizeToFit to resize a bit too small.

Fixes #4318


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 3da13b80 07-Apr-2012 Rene Gollent <anevilyak@gmail.com>

Fix typeahead cancellation in file panels.

- Add accessor to PoseView that reports whether the view is currently
typeahead filtering.
- Use said accessor in the file panel's filter in order to detect whether
to tell the latter to cancel filtering vs closing the panel.

Fixes #8140.


# 581a9661 05-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Fix inconsistent "Open parent" behaviour

1. When in /boot, you couldn't go to the parent (which is fine by itself),
but the menu item wasn't disabled.

2. In Single Window Browsing, doing "Open parent" wasn't respecting that
setting and was opening new windows.

3. In filepanel, when navigating to Desktop folder, the "Go to parent" was
still proposed even though it would do nothing choosing it.

4. Opening a Pose in Single Window Browsing was repopulating the menus and
putting the shortcuts again. That was an issue if Navigator bar was used
since it conflicts with its shortcuts.

Fixing ticket #6851.


# d390c065 04-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: Fix assertion in InitDirentIterator

The dynamic_cast was called twice, and the assert was
done on the first attempt. Now it just cast once, assert on this
and pass it further as before.

CID 3122.


# 9cf506a2 18-Jul-2011 Philippe Saint-Pierre <stpere@gmail.com>

Tracker:

* Add "Arrange By" submenu in Window menu.
* You can arrange by the same fields you can sort by in list view. Changing your sorting order in list view will change the Arrange By choice when you enter icon view and vice-versa.
* Support ReverseSort order.
* Keep the clean-up feature, but it's now under the Arrange By menu.

Fixing ticket #1349.



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


# def39abd 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Finally finish implementing proper selection rect autoscroll to work with the
new asynchronous mouse tracking. Sorry for the delay. Up to now it was needing
mouse moves to autoscroll, it now behaves as before.

* Removed check that was disabling regular drag'n'drop auto-scrolling when
inactive. I don't see an obvious reason why that was done, as it's just handy
and is consistent with the other behaviors when inactive.

Note, i gotta love those comments that do anything but help, good example of
how not to comment :) i.e don't comment about what will happen when the
adjacent code won't be executed (especially in a case that can't happen).
My brain almost exploded a second time trying to explain that!

// selection scrolling will also work if the window is inactive
Should read:
// disable drag'n'drop auto scrolling when window is inactive




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


# c98a59c6 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Don't show packagefs on desktop or in disks window

More generally: Any volume that is mounted at a directory of a
persistent volume is not shown on the desktop or the disks window any
longer.


# df1c9e98 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Slight renamings, no functional changes.



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


# 29769e04 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Don't do anything in MouseIdle if we're not dragging a message.

This especially avoid bringing tracker windows up to front when staying idle
over a tracker window while holding down a button. This could happen when
hovering while still holding a scroll thumb of another overlapping window.

Fixes regression #7829 introduced in r41892

* Also properly reinitialise the cached dragMessage on B_EXITED_VIEW,
otherwise it would still think it is dragging and thus still pass through my
above fix.

I'd like to cleanup the drag message caching mechanism as it's not
pretty in my opinion. Possibly even adding it to BView.


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


# 2e687c47 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

No need to call DragStart() if we have no drag message yet.



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


# 7560163d 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Revert r42223 since it breaks some cases.
* Simplify handling a bit. Instead of more or less duplicating some of the
move logic from PoseView, simply construct an appropriate target model and
let PoseView's HandleDropCommon() take care of understanding what to do with
the drag message. This has the side effect that things like dropping a text
clipping message onto a target in an x-ray menu actually works as expected
now.



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


# ab6b1737 17-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Slight relocation, no functional change.



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


# 5e90adf5 17-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Fix regression introduced by r41892: DragStart() was called at the wrong time,
leading the drag message to contain nothing more than an empty B_MOUSE_IDLE
message. This broke several other cases of drag and drop which relied on it
containing the dragged refs. Fixes #7705.



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


# 6009abf2 05-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* One more fix needed for right click dragging. Ignore right mouse up if a drag
or long click happened between the initial mouse down and the present mouse up.
Tried to avoid this solution by other means but wasn't working in a corner case,
at least it's clear what's the code is doing.



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


# f2068166 04-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* Fix regression spotted by Humdinger. Emulate right click dragging like it
used to work before, i.e right mouse button dragging works and the context
menu shows on mouse up if not dragged. I guess that at some point we'll rethink
all the mouse gestures we support and maybe simplify a bit, like dropping
long click support (as an emulated right button), and possibly
separating some features via user settings if needed.



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


# 596bb689 03-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* Finally rewrote the filthy, busy-looping, mouse tracking in Tracker.
The new asynchronous tracking doesn't lock the view and makes desktop
replicants happy while clicking and dragging around. Fixes #880, #7241
and certainly other tickets, that i will revisit, about refresh locks
on the desktop or mouse related bugs. Based on a reusable MessageFilter and the
recent B_MOUSE_IDLE message. Some parts are ported from the old code
and could use further simplification.

There should be no intentional user fonctional change, except:
- slightly bigger threshold radius, shorter duration thresholds
(= 1.0 x the system-wide doubleclick setting)
- not reimplemented: quickening threshold when holding shift while dragging
a pose over a destination pose.

Some parts are ported from the old code and could use further simplification.
There is one known minor regression with autoscrolling while
rect-selecting but that will be better fixed with some changes to the
autoscroll code. Will address that ASAP. As for the unknown regressions,
please test :)


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


# ccb1117c 06-May-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed a bug in BPoseView::CreatePoses() that Ingo found, but was apparently
too lazy to fix?!


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


# 5987b2a3 07-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Offer a 'Real name' column in Tracker list view mode, when set to show localized names. As discussed a while back. I honestly don't know if this is such a great idea after all. Name + real name is kind of silly. Ideally it would be labeled in a more logical way, or the feature should be dropped.

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


# 0e952e21 23-Feb-2011 Philippe Saint-Pierre <stpere@gmail.com>

If the template name was long enough, we would have exceeded the string size.

CID 9046


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


# b2d0aaa9 31-Jan-2011 Rene Gollent <anevilyak@gmail.com>

Don't attempt to move the selection to the target window if the latter does not contain a poseview (as is the case for an info window). Resolves #7179.



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


# 915a7b8c 19-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Make BObjectList<> publically available:
* cleaned up ObjectList.h
* switched several uses of new() to new(std::nothrow)
* moved ugly AsBList() hack into BObjectList<>::Private class and
adjusted all callers accordingly


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


# d277bc82 05-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

Since the function keys don't serve any purpose yet, make F2 enter renaming
mode for the first selected item (i.e. just like Cmd-E). This makes Tracker
behave as Windows Explorer and at least Nautilus in Ubuntu.


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


# 1959f850 19-Oct-2010 Rene Gollent <anevilyak@gmail.com>

When trying to auto-place a pose, we need to short circuit if we're the
Desktop and the next available slot lies outside of the view bounds.
Otherwise we loop forever. Resolves ticket #5218.



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


# b8616583 18-Oct-2010 Rene Gollent <anevilyak@gmail.com>

Sort poses using std::stable_sort. Should resolve #6700.



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


# 7b80b5d5 17-Sep-2010 Alexandre Deckner <alex@zappotek.com>

* Use multiple translate contexts in Tracker for easier translation


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


# 108f794c 16-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by mt: Translate various yet untranslated strings in libtracker,
closes ticket #6374. Thanks a bunch!


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


# 606e627e 15-Aug-2010 Rene Gollent <anevilyak@gmail.com>

Remove unnecessary NULL check (the view in question is created in all cases in InitCommon(), and is already dereferenced several times prior to the check in the function anyways).

Fixes CID 1078.



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


# 4a7b2e04 07-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Add FormatDateTime function to BLocale
* Use the function to localize the date/time in tracker.


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


# 1f34e928 14-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Removed last remains of the OPEN_TRACKER define.
* Cleanup of unused include.


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


# a1110964 13-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Minor style fixes, spaces vs tabs.


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


# 148f33f2 13-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* More PoseView localization by T.Murai (a.k.a mt). Thanks a lot. (be careful with the 80 chars indenting though ;-)


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


# 4ed28a57 12-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Applied libtracker localization patch from T.Murai (a.k.a mt) with some modifications (see below).
* Functional modifications:
Reworked InfoWindow file size localization, the patch removed number formating (size in bytes) and was too complicated to my taste.
Replaced the uses of sprintf with the safer snprintf.
Changed signature to x-vnd.Haiku-libtracker instead of x-vnd.Haiku-libTracker (to be consistent with the binary name)
* Style modifications:
Reworked lots of 80 char indenting (probably due to the now shorter line lengths since your previous patch that wasn't using the macros)
Lots of missing brackets when "if's" becomes multiline.
Other minor fixes.

Noticed a few uses of FindItem on translated names that might become problematic someday. Added some TODO's regarding localization of file sizes. Localization might still be
optimized a bit regarding the produced en.catkeys

Note to translators: .catkeys files should be placed in haikusource/data/catalogs/kits/tracker though beware as the base en.catkeys might change
slightly in the next days.
Note to users: As with any other app you need to restart Tracker (or any aother app using libtracker's filepanels) for it to pick the locale setting. E.g: use 'quit an
application' and 'restart Tracker' from process controller.

Thanks a lot T.Murai


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


# 1e9e9da3 11-May-2010 Axel Dörfler <axeld@pinc-software.de>

* I'm not sure why it happens, but the drag bitmap offset was BPoint(2, 1) off
(that should be good enough for the current Tracker).
* Minor cleanup.


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


# 9c8f2367 11-May-2010 Axel Dörfler <axeld@pinc-software.de>

* Never choose a target pose in UpdateDropTarget() that is part of the currently
dragged selection. This fixes the context menu popping up when you try to
move around an icon a few pixels only.


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


# ecdb5ec6 02-May-2010 Alexandre Deckner <alex@zappotek.com>

* Filter out B_INSERT and B_FUNCTION_KEY as they would end up in type ahead "default" case. Fixes #5609. Looking at all the not already caught keycodes, this should cover every cases.
+alphabranch


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


# 08b3ae9b 02-May-2010 Alexandre Deckner <alex@zappotek.com>

* RemoveFromVSList was failing to actually remove some poses due to a buggy optimisation. This was causing calls on invalid poses in many places in the PoseView code (icon mode). This fixes #4322 (and duplicate #5780). This should also fix #3828. Please test.

I took the conservative approach and the penalty is really minimal if even not at all perceptible as i've measured. I decided to go this way as PoseView code is very fragile and depends on many of those "loose assertions" to be valid. This conservative approach also allows to confidently include the fix in alpha2:
+alphabranch

Besides those "wise" reasons, the thing is that i've wasted too many hours already this week and in the past due that VSPoseList/PoseList syncing fragility. I'm not willing to fix the optimisation of a broken design that i've already experimentally rewriten two times already, and that i (or any mentally sane person) will finally ditch sooner or later :)


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


# f7cf3195 29-Apr-2010 Rene Gollent <anevilyak@gmail.com>

PoseView::MoveSelectionInto() needs to check for the case that the source
window actually has a selection list to use. Certain actions can render it
possible to empty out the selection in mid drag-and-drop, which MoveSelectionInto
wasn't taking into account, leading to a crash.

Fixes ticket #5860.



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


# ab5fb573 28-Apr-2010 Alexandre Deckner <alex@zappotek.com>

* Removed what finally looks like an old (and not needed anymore) workaround. That is, the sending of a message when dropping a pose over another one while its context menu is still showing. That was causing #4757 since poseview was receiving the dropped message two times.

I've been investigating the issue in depth, it's there since the first opentracker revision, so i even installed R5 and built/debugged opentracker to confirm it was indeed needed on R5. That would be another case of undocumented (misdocumented) workaround for an R5 bug, ie: BMenu would steal the drop message although the mouse isn't over it anymore (Stefano idea?). Heh if only i could reach the original Tracker devs :-D

I don't like when i don't understand a problem up to the last bit, but it should be reasonably safe for alpha2 +alphabranch


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


# 01e63caf 21-Apr-2010 Rene Gollent <anevilyak@gmail.com>

When creating a new pose, the index offset at which it was inserted in list mode was never passed back. Consequently, when creating a new folder via the cmd+N shortcut (which immediately goes into edit mode), the TextWidget for editing would appear at the wrong location.

Fixes ticket #5774.

+alphabranch



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36408 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


# 7c0f5738 02-Mar-2010 Rene Gollent <anevilyak@gmail.com>

Remove Tracker's special DnD handling. Instead, BTextView/BTextControl now
honors drag messages containing entry refs and resolves the path of the first
one contained. Will work on a more sophisticated solution that would allow
optionally extracting the file text instead via right click drag context menu
when I have more time.



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


# ddee0943 01-Mar-2010 Rene Gollent <anevilyak@gmail.com>

Add an extra sanity check to Tracker's automatic text clipping extraction when
drag and dropping text files: before it would blindly read the entirety of the
file's text contents regardless of size, which probably led to more than a few
nasty surprises when someone attempted to drag very large (i.e. multimegabyte)
text files. We now clamp the amount of data we read to 64KB. Though it's
debatable if this feature is at all useful, since it may potentially be better
implemented by handling entry_refs in dropped messages in BTextView directly
(assuming a compatible type). Opinions welcome.



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


# f24e3c9f 21-Feb-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed warnings and coding style violations.


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


# 029f4e93 02-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

* Add an inline CurrentPoseList() that returns either the filtered or normal
pose list and replaced the rather ugly "fFiltering ? ..." everywhere with it.
* Automatic whitespace cleanup.


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


# cc5b8518 02-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

No need to lock out the normal typeahead when filtering doesn't apply (i.e. in
icon mode). And a little automatic whitespace cleanup.


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


# b3e4ce54 31-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Use the multibyte aware string functions for typeahead search and filtering so
that special characters can be used as well (umlauts for example).


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


# 7acdd03f 31-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Replaced the sMatchString buffer used for typeahead search by a BString. No
intended functional change.


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


# ef9c0b6a 31-Jan-2010 Rene Gollent <anevilyak@gmail.com>

More cleanups:
- remove some more leftover desktop integration-related code.
- remove special case that would hide the Desktop folder in file panels.
- fixed BFilePanel to correctly filter out the trash from the volume root
and show it on the desktop like everywhere else.
- renamed CountView::Add/RemoveFilter so they don't hide
BHandler::Add/RemoveFilter (gcc4 warning).



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


# 83c03b56 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Missed the re-insertion when exiting early after checking the sort order for a
pose on a non-visible pose list which would cause poses to get lost from the
unfiltered list.


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


# 6a5cf0a1 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Allow shift-return to discard the filter so you can decided whether or not the
filter shall stay in effect when opening a selection.


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


# 29327709 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Fix missing check that would cause non-matching poses to show up on attribute
changes (which may also happen on creation of new files).


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


# ac53da69 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

When initially starting filtering we need to make sure that non-matching poses
fall out of the selection. The same is later done when removing them from the
matching subset, so moved that to a common EnsurePoseUnselected().


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


# beb2e054 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

* Renamed CancelFiltering() to ClearFilter() to make it more clear what it does.
* Add UpdateAfterFilterChange() with the update part of FilterModified().
* Add StopFiltering() that clears the filter and updates.
* Make use of these functions where appropriate to fix missing scroll ranges
after canceling a filter.


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


# 545ebde0 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Implement type ahead filtering (this time for real and without abusing the
vertically sorted pose list). When enabled typing will filter based on the
currently visible attribute columns. Using shift-space as a delimiter
independent filtering strings can be typed, so you can filter based on multiple
attributes at once to refine results while you type. Filtering stays active
until you cancel it using the escape key. While the filtered result is displayed
all normal file operations can be used. Using the return key while filtering
auto-selects and opens the first filter result, allowing for fast traversal
through directories and directly opening the topmost result.

* Introduces fFilteredPoseList which stores the active filter result. The list
is only used when filtering is currently active, so no syncing is required
otherwise.
* Some minor adjustments to leave out invalidations where non-visible poses are
updated.
* Account for the now possible multiple lists throughout BPoseView.
* Add filter string output to the CountView and made that one a bit wider.
* Added all the settings-cruft for type ahead filtering (defaults to off).


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


# d9626569 17-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Model: Add accessor for Trash node property and cleanup spacing between inlines.
Rest: Use the IsTrash() accessor on Model where possible in place of the more expensive FSIsTrashDir() check.



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


# 7ca5e887 15-Jan-2010 Rene Gollent <anevilyak@gmail.com>

* PoseView: Re-enabled respecting the invisible pose attribute.
* FSUtils: Mark the root-level Trash directories as invisible. For the time being,
this renders the Trash only visible on the Desktop once more, pending
further consensus on how to handle it in the future. Note however that
this also means that Desktop and/or var directories that still have the
old _trk/pinfo_le attribute from prior to the previous visibility changes
will also be marked invisible again, and those people dual-booting older
BeOS will also still see this issue as the Tracker on those will still
force-write the invisible attribute onto those directories on every volume.



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


# a65ec153 15-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Fix style violations (thanks Axel!).
Update filesystem name in find_directory as our fat filesystem is not named "dos".



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


# 01dffd8e 14-Jan-2010 Rene Gollent <anevilyak@gmail.com>

More Tracker refactoring:
* relocated Trash dirs to volume roots by modifying find_directory() to report the trash location as volume/Trash.
* FSUtils no longer creates /home/Desktop on every volume.
* TrashWatcher now keeps icons in sync on all volumes.
* Simplified FSGetDeskDir since it no longer has to worry about getting the desk directory on any volume other than the root.
* Relocated trash context menu logic to BContainerWindow so it can also be used at the volume roots.
* DesktopPoseView now creates a virtual Trash pose representing the trash contents as before.
* Corrected typo: Model::WriteAttrKillForegin() -> Model::WriteAttrKillForeign().

Closes ticket #5245.



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


# c126f2f2 13-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

anevilyak:
* Fix missing parenthesis in r35040 that caused node monitoring not to work.
* Minor automatic whitespace cleanup.


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


# 82d8aaf8 12-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Changed strings to sentence case. The changes in StatusWindow and
FSUtils are missing because I have some unfinished work in progress
in those files. Will commit them separately. This is case-tracker.diff
from #5169.


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


# 671dd808 12-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Various cleanups:
* Removed dead/obsolete Integrate Non-boot Desktops code.
* Modified PoseView to ignore the fInvisible attribute of BPoseInfo for now.
This has the net effect that the Desktop folder and /boot/var are no longer
hidden from the user. To go with this change, Tracker no longer forcibly
writes that hidden setting to those folders on access. This feature might
be useful again in the future (especially in conjunction with relocating
the Trash folder somewhere such as the disk root), but is currently somewhat
problematic because those dual-booting with BeOS will still have a Tracker
that force writes those attributes which would bring us back to square one
with respect to showing the Desktop folder when we start respecting the
attribute again. Suggestions welcome. Haiku-only users can remove the
_trk/pinfo_le attribute on those folders to remove the invisibility
in any case.
* TrackerSettings: Removed obsolete desktop integration settings. Also
modified TrackerSettings parser to skip unrecognized settings instead
of aborting the settings file parsing process entirely.

Closes ticket #2872.



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


# d3b11328 27-Oct-2009 Rene Gollent <anevilyak@gmail.com>

Move CheckDevicesEqual into FSUtils so it can be used in more places.
Rework ContainerWindow's B_REFS_RECEIVED to use CheckDevicesEqual to decide move vs copy as is done elsewhere.

Fixes ticket #4850.



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


# e2ee5e57 26-Oct-2009 Alexandre Deckner <alex@zappotek.com>

* My previous fix to #4130 wasn't correct since it could miss some moved or
renamed files. After more investigation i found out that the problem was
caused by a non usual use of the zombie list in r31307. In the conditions
to reproduce #4130 it would call AttrChanged() or StatChanged() on zombie
poses which by convention should always be invalid models, ie: null node.
The logic would potentially create other problems too as it wasn't only
adding refFiltered models to the zombies.
I reverted part of r31307, clarified the logic and updated the comments.
I'd prefer another implementation for this as reusing the zombie list
here is only calling for future mysterious problems. #4131, #4271, #4610
and #4831 are still closed, but i'm reopening #1717 which is more of an
enhancement btw.



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


# c3ce6294 23-Oct-2009 Alexandre Deckner <alex@zappotek.com>

* When a file was created, then deleted shortly after, on a PoseView that is
busy processing other things, the file could be gone by the time we processed
the fs notification message of the entry creation. This case wasn't handled
properly and would cause #4130 and most certainly duplicate #4831, #4610 and
also possibly #4271.


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


# 725ad924 20-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* When checking a draw/updateRect intersection, an offset was added too early
making the check fail when Pose::Draw was called with a non zero offset.
Fixes #4289
* Fixed an x/y typo (that had no really visible effect, the fade effect might
need some more indepth review)
* Removed dead code, and replaced an inlined intersection check with
BRect::Intersect.



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


# 105f1c63 19-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Added a TODO about droping icons under replicants or deskbar since i
couldn't find a quick solution that wouldn't need the layouting rewrite
(currently in redesign phase in my branch)
* In the mean time i've added desktop element avoidance in Cleanup so one
can easily recover hidden icons without advanced shortcuts. Before that, it
would need a CleanupAll aka shift-alt-k (which would relayout everything btw).

Doesn't fix #4241 but at least provides a way to see your icons again easily.



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


# bdee02b5 19-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Move cursors to Cursors.h
* Use the new copy cursor


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


# 3074019e 18-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Remove wrong check that was preventing to properly place the first pose. Fixes #4055


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


# 2d6de22f 08-Aug-2009 Rene Gollent <anevilyak@gmail.com>

An Open With window has no target model. PoseView's drop target handling code didn't take this into account, causing a crash. Fixes ticket #4200.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32209 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


# 254d2b2d 28-Jun-2009 Rene Gollent <anevilyak@gmail.com>

Fix a number of problems in PoseView:

1) If a node was filtered out by the ref filter, PoseView effectively wiped out all evidence that it ever knew the node existed and stopped listening for changes on it. Consequently, it would never notice if an attribute change such as updating the file's type made the file now eligible to be viewed. Now we keep watching the node and keep it on the zombie list until such time as it passes the filter (if ever).
2) Refresh() cleared the pose list, but not the inserted nodes list. Consequently, any nodes that were already visible before calling Refresh() would not be readded.

This fixes various problems seen in the file panels in WonderBrush (and probably others), such as the file panel initially coming up empty sometimes, and also it not noticing new screenshots,

This closes ticket #1717.



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


# bcfe344c 22-May-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made our struct stat POSIX compliant again -- the time_t fields have been
replaced by timespec fields. Via macros the structure is still source
compatible with the old one.
* Introduced header <compat/sys/stat.h> that defines the old stat structure
(as stat_beos) and conversion functions
* Introduced versions for [l,f]stat().
* Added symbol versions for BDirectory::GetStatFor() for sake of binary
compatibility.
* BStatable::GetStat(): Renamed the old method, changed its parameter to
stat_beos*, and and made it private. Added a new version (using up a
reserved vtable slot). It remains source and binary compatible.
* BRefFilter::Filter(): Changed the struct stat* parameter to struct stat_beos*
for sake of binary compatibility. This breaks source compatibility, though,
which we can't help, since the class doesn't have reserved vtable slots.
* Fixed several issues with the stat structure change, mostly adjusted uses of
BRefFilter.


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


# 4024eadf 10-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

My previous fixes had an oversight and the very last fix introduced new drawing
problems. Basically, forceDraw was set to false which then prevented any new
items to be drawn when there was no scrolling necessary. Now we use a local
variable "needToDraw" that starts with "true" on each iteration. I don't really
know why forceDraw is even passed to the function in the first place. Maybe
it should be called "disabledDrawing" with reversed meaning and should be used
for windows that open on another workspace....


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


# 039878c1 09-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Set forceDraw to false when we have already drawn the pose, not when
there is only some pending scrolling.
* Fixed my previous ScrollTo() change to actually scroll in the two directions
in two steps...


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


# 72cd1c77 09-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed some weird fallback code, I don't think it's used and added a TODO
for whoever stumbles there next...


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


# 6a71afb0 08-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Sorry for mixing some cleanups into this patch...
* When changing icon sizes, invalidate before scrolling. This causes silent
scrolling in app_server and avoids a visual jerk. Everything needs to be
re-drawn at the new icon size anyways.
* Removed the fUpdateRegion member from BPoseView. It was supposed to make
drawing quicker, but it only made it slower. Checking for intersection with
the update rect passed to Draw() should be much more straight forward and
does not involve app_server communication...
* Refactored some misnamed methods, ScrollIntoView() would always draw and
only sometimes scroll - I couldn't agree with that.
* There is a very confusing mix of "fullDraw" and "minimalRect" booleans which
seem to be used with wrong semantics. The minimalRect flag passed to BPose::
CalcRect() means to get the pose rect for the icon and the first column only,
not all columns. Contrary to that, some pose rect calculation happens with
minimalRect == fullDraw... I tried to fix some of that.
* The visible changes of this patch are when adding poses. The
SynchronousUpate() wasn't working so well, I made it work reliably by invoking
Invalidate() and Window()->UpdateIfNeeded(), which also takes care of any
drawing that the app_server has to do for the background. And it's flicker
free in double buffered mode...
-> This fixes poses being drawn multiple times and the text getting darker.
* And there was another bug when adding poses. The extent (bottom of last item
in list view for example) can be just above the current view bounds. When the
next item is added above the view bounds, then the extent scrolls into view,
but there is nothing to be scrolled in this case. srcRect is still invalid
and so is dstRect. But destRect should be valid in this case.
-> This fixes some poses being cut off at the bottom when opening Tracker
windows.


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


# 7dc5caf2 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

When changing icon size, pose locations need saving. That's not so nice, but
pose locations are always in view coordinates from the perspective of BPoseView,
even if the unscaled location wouldn't change from the perspective of BPose.
This could be removed when storing and restoring unscaled location. I was just
not sure were all this happens.


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


# 96da4b41 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Fix the completely broken desktop icon size changing which I introduced
yesterday. It needs to auto-place icons which go out of view or underneath
the deskbar or a replicant. Also it obviously cannot scroll to keep the
view "centered" as normal Tracker windows.
* Fix/improve the desktop context menu with regards to icon size options. It
also displays the shortcuts, which now work on the desktop too.
* When doing an icon cleanup on the desktop, not only the deskbar is avoided,
but also replicant views.


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


# e419aeed 06-Apr-2009 Rene Gollent <anevilyak@gmail.com>

If drag and drop with the context menu is used (right click drag / control + drag), treat "Copy Here" as a request to duplicate the item if the destination is the same folder.



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


# 7cdbeb0e 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Changing the icon size will now work more like simply scaling/zooming the
view. BPose converts the scale in SetLocation() and Location(), which does
_not_ affect performance for list mode, BTW. So that should be fine.
* The center of the pose view is now locked when changing the icon size.


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


# e70b6d95 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Cleanup in the icon mode stuff. kScaleIconMode is gone. There is simply
kIconMode and it can have different sizes.
* The "Icon Mode" super menu item is marked, when in icon mode, as well as
the size item in it's sub menu.
* When switching from mini icon mode or list mode back into icon mode, the
previous icon size is now restored. This also works when the folder has
been closed meanwhile. (The on-disk format for view state has changed, so
your folders will open with default values.)


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


# f5bdd554 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by Maxime Simon with small changes by myself: Change the icon size
menu as discussed in ticket #2431. There are only three main shortcuts for
icon, mini icon and list mode. Additional short cuts have been added to
increase and decrease the icon size. I've moved the shortcut from the 32
icon size to the menu item for the icon size menu itself. Unfortunately,
icon placement does not scale with the size (as before) and switching to
icon mode from one of the other modes does not restore the previous icon
size. Looking into it.


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


# 019f90e6 05-Apr-2009 Jonas Sundström <jonas@kirilla.com>

Setting the escape key as shortcut for the Cancel options of Tracker's dialogs.

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


# 561b5d97 05-Apr-2009 Alexandre Deckner <alex@zappotek.com>

* Implements enhancement #2829, ie: change the modifier key (now shift) to force identify on
already identified files and change the menu item label accordingly so that the 'feature' is
not hidden anymore.
The identification mechanism will probably be automated in the future, forcing
identification would then become the only use of this menu item.


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


# 0834dd80 28-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Use B_DRAW_ON_CHILDREN for the Desktop pose view.
* Draw the selection rect in DrawAfterChildren().
* Call DrawAfterChildren() manually in Draw(), if B_DRAW_ON_CHILDREN is not set.

This change allows replicants, in case they want to be aware of being embedded
in the desktop, to use alpha blending to draw on top of the desktop pose view.
For replicants which do not care, this patch changes nothing. When views
with B_DRAW_ON_CHILDREN invalidate themselves, they will automatically trigger
an update of children that sit on top the invalidated area, at least with our
app_server. So this change works just like one would expect, ie like
compositing views. Of course it should have flickering when app_server does not
run in double buffered mode.


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


# f5812f4b 14-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

r28745 prevented overwriting the global type ahead string buffer from
an unrelated window. However, we broke unsetting the type ahead string on the
little info view. This fixes this again, the type ahead string never went
away.


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


# 1c56dee2 08-Mar-2009 Rene Gollent <anevilyak@gmail.com>

We need to remove the node from our list when the pose is removed. Otherwise deleting, then recreating the same file will be rejected as a duplicate and not added to the view. Thanks to mmlr for reporting.
Small cleanups.



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


# ccefc7ac 06-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Clear the node list when switching directories. Otherwise navigating out of a directory and back in single window mode will show no nodes whatsoever.



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


# 38f46251 06-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Rework this again due to flaws in the previous optimization - due to its use for things like sorting the visible pose list, it would rely on whatever pose column was being used for sorting, and as such would generate false positives when the view was being ordered by certain attributes. We now use an std::hash_set to track all the nodes that have been added to the current view and use that for a duplicate check instead. Also slightly boost the max number of models per chunk that we read.


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


# 847af007 03-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Second attempt at PoseView population optimizations: We still search for the pose in our list, but now rely on a binary search to do it instead, rather than the previous linear search. This considerably boosts population speed for large folders here, while still preserving correct behavior.



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


# 63459605 24-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Revert the changes in r29316 as it's now fixed upstream.


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


# ea83c971 24-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Round mouse coords before doing BRegion ops for the transparent
selection rect, as BRegion behaves unpredictably with non-integral
values (cf bebook).
Fixes #1527


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


# 3291c580 21-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Revert the PoseView change from r29190. This is incorrect since the outline setting only applies to the desktop poseviews, and is explicitly set there by the backgrounds settings code in BackgroundImage.cpp. This fixes the font rendering artifacts reported in ticket #3467.


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


# ec8c04cc 21-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Never show the copy cursor if the item being dragged is a volume or the disks icon. Fixes ticket #3468.



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


# 4712bc80 16-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Revert one the changes done in r29198 has it happen to be wrong. See #3450 and #3011


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


# 95da0645 14-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Some pose performance improvements by aldeck and myself:
1) We don't need to call FindPose() on every pose as we're freshly adding it,
and a duplicate should never happen in this circumstance (the FindPose() is still there if
Tracker is compiled in debug mode however.
2) Adjust the FSClipboard calls such that the locking is optional. This allows us to lock
once per CreatePoses group rather than once per pose.

Together these changes make for a significant performance improvement when it comes to
populating a large folder.



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


# 71ed64b7 13-Feb-2009 Jérôme Duval <korli@users.berlios.de>

* Icon label outline is by default true. We take this into account on PoseView creation in Tracker, and when no image is selected in Backgrounds.
* This flag is still only settable when an image is selected.



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


# c4d59015 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Slight logic cleanup that prevents excessively rechecking the drop target in some instances.



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


# a67852c5 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Reset the cursor check state if we drag over a pose that's not a suitable DnD destination for the drag. Otherwise we'll reset the cursor back to the move state and never set to copy again unless we exit/reenter the window. Thanks to luroh for reporting.


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


# 81796bc0 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Don't leak memory when aborting operations due to read-only volume.



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


# c854c133 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Disallow move to trash and/or delete operations from read-only volumes. This fixes ticket #3421.



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


# 42fe9293 07-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Tracker now alters the cursor to indicate the resulting FS op when drag and dropping files.
If the op is determined to be a copy, the copy cursor from Wonderbrush (thanks Stephan!) is
displayed. Otherwise, the default hand cursor is used to indicate move.



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


# 28e82de7 31-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Compute the point list for the destination items. This fixes a problem reported by BGA where dropped items in large icon mode weren't being dropped onto the location of the pointer, but rather the first available grid slot.



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


# b8d65a49 30-Jan-2009 Rene Gollent <anevilyak@gmail.com>

This should really fix #3393. Apparently I'm more sleep-deprived than I thought.



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


# fee5fc34 30-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Fix another regression preventing moving around icons. Fixes ticket #3393.



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


# 994541a8 29-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Refactor MoveSelectionTo a bit to reuse other code instead of duplicating most of it practically verbatim with different variable names.



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


# 12f46beb 29-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Fix a regression introduced with my previous commit where forcing Move would not always be respected.



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


# cfd0c077 28-Jan-2009 Rene Gollent <anevilyak@gmail.com>

If the source and destination volumes of a drag and drop op do not match, default to copying unless the user has explicitly requested otherwise. TODO: visual indicator of which op is going to happen.

--

M PoseView.cpp


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


# e5a30119 12-Jan-2009 Alexandre Deckner <alex@zappotek.com>

* There was a bug in the way the mimetypes list was constructed, it would recalculate the list on
each addition, which is o(n). It's already refreshed lazily on read, only rarely when ContainerWindow updates
his menu.
Now there's only one recalc when finished adding poses, 9ms for 20K files here.
Pose adding is almost linear now for the first thousand files, but it gets worse after that due to
another known problem. Now doing 35s instead of 80s on a 20K files folder here, more to come :)


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


# b47e7347 11-Jan-2009 Karsten Heimrich <host.haiku@gmx.de>

* Prevent a column to shrink smaller then the default column width. This was most notable
when double clicking e.g. the Size column in a tracker window containing only folders.
It would shrink smaller then one can resize it while dragging the resize 'handle'.



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


# 51505cb0 10-Jan-2009 Alexandre Deckner <alex@zappotek.com>

* The pose adding thread was going too fast, opening too many files (those are closed by the window thread), and
reaching the file descriptor limit. For some still unknown reason, this was causing GetNextDirents to stop returning new
entries. The result was that, on populated folders, Tracker wouldn't load all poses and stop at a random amount.
We now take a more conservative approach and close the files before sending, reopening them on reception.

Now the AddPoses thread is a bit too aggressive, especially on second runs, i needed to add some snoozing otherwise it
would stall Tracker for several seconds. (testing on a 20000 files folder).
This fixes #3054



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


# db5b0bfc 27-Dec-2008 Rene Gollent <anevilyak@gmail.com>

When drag and dropping a text file, Tracker would refuse to extract the text (and style attributes, if any) if the file in question didn't have both the text/plain filetype *and* Tracker's clipping attribute. Since I was unable to find any good reason whatsoever to check for the latter, I removed this. Fixes the reported problems where drag and dropping a file onto a BTextView would do nothing unless the clipping attribute existed as well.



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


# d35d0f74 28-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* s/fLastKeyTime is no longer a static member - this fixes that the type-ahead
buffer will be taken over to another window (if you type fast enough).
* Also the type-ahead runner no longer clobbers the static type-ahead buffer,
so it won't delete something you typed in another window anymore (again, if
you type fast enough :-)).


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


# b545073f 06-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Moved the global BPrivate::WidthBuffer from BTextView into BPrivate as
gWidthBuffer.
* Tracker PoseView now uses BPrivate::gWidthBuffer instead of it's own
instance.
* TextView.h and PoseView.h are now a little cleaner.
* InterfaceDefs.cpp now deletes gWidthBuffer in _fini_interface_kit_().
* Added binary compatibility support for NetPositive in WidthBuffer.h and .cpp.
Obviously it kind of defeats the purpose of having WidthBuffer neatly tucked
away in the BPrivate namespace, but Haiku should run NetPositive, I guess.
Fixes #2879.


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


# e9842421 31-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* On date format change, remove the need for the synchronous call to
DrawViewCommon(), simply invalidate since the logic is simplified now,
see below.
* Reworked the way TimeAttributeText was updated when date format is
changed. Got rid of the recalculatText flag propagation, it was broken
since forever anyway (was here on r5 max4.1): It was only updating
visible poses and wasn't robust in certain cases. Besides, it was
cluttering the code on several layers upfront only for date format changes.


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


# cde552bd 18-Oct-2008 Michael Lotz <mmlr@mlotz.ch>

Don't select anything in type ahead mode when no match is found anymore. This
makes sure that the best match just stays selected instead of always selecting
the topmost pose.

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


# 842cd2b8 18-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* Removed the call to Refresh() when switching to scaled icon mode as it
would scroll to (0, 0), and screw the now always-in-sync fViewState.
After testing every possible mode transition, there seem to be no side
effect as the comment would suggest. Stippi, do you remember why it
was necessary? See r18699.
* This enabled me to do my previously added TODO's.


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


# 3704f31d 17-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* AddPosesCompleted could be called actually before all the poses were added.
The method was called after _sending_ all the messages, not after receiving
them all. This fixes the scroll validity check in AddPosesCompleted in list
mode (bug mentioned in my last commit).

We can now close #2441, tracker windows should now be completely persistant
with regard to scrolling now, in all modes (spatial mode, single window
mode in list or icon mode). \o/


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


# 3d7584da 16-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* Rewrote the way BViewState checks if changes needs to be saved on quiting a navigation window (icon mode and
list mode) or switching dir in single window navigation. Fixes the other half of the problem in #2441. Left some
todos.
I discovered an other bug that can add a random offset after finishing adding poses.


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


# 49ad25b3 16-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The type ahead mechanism did not work correctly in list view mode: instead
of taking the contents of the columns, it would always use the file name
instead.
* That uncovered another bug, though: WidgetText::Text() tried to cast everything
to StringAttributeText, but GenericAttributeText is actually used for most
columns.
* Therefore, GenericAttributeText is now a subclass from StringAttributeText.
* Extended the type ahead to take other columns into account, and made it also
find strings in the middle (like a filter) as a second choice.
* Whitespace cleanup.


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


# e522ba55 15-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* In single window navigation, tracker wasn't restoring the view origin (current scrolling) properly. It was reseting the origin even after
successfully loading the saved state. Reworked the logic to make that work properly (this also needed checking if the state read succeeded). This
fixes part of #2441. There is still an issue when sometimes the view state is not saved properly, more tomorrow!


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


# 2e2f53f6 25-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

don't leak extendedPoseInfo on error. CID 997

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


# 90b7764d 21-Sep-2008 Rene Gollent <anevilyak@gmail.com>

Move WidthBuffer and TextGapBuffer into BPrivate and use them from there in BPoseView and BTextView. This (correctly) fixes the previous gcc4 build issues.



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


# a682d981 20-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Quite a cleanup action to avoid polluting the global namespace with private
BTextView classes:

* Declared the directly used BTextView helper classes as private BTextView
classes and changed all affected files.
* Realized that Tracker's BPoseView was (accidentally?) using what used to
be _BWidthBuffer_. It had declared it's own class with the same name and
same members/size in headers/private/tracker/TextViewSupport.h, but the
implementation was nowhere to be found. I can only explain this that
the BTextView implementation was then actually linked and used. But the big
problem was that it was used without locking (unlike in BTextView)! When
many Tracker windows opened during system startup or later and they happened
to each request characters not yet in the cache, I imagine things could have
gone bad and corrupted memory. Anyways, since I can see the usefulness of
the cache, BPoseView uses BTextView::WidthBuffer on purpose now. And I moved
the locking inside BTextView::WidthBuffer::StringWidth().
* Adjusted InterfaceDefs.cpp accordingly.
* TODO: Move subsequent classes into BTextView namespace as well, ie derived
classes that BTextView doesn't directly know about. All stuff in src/kits/
inteface/textview_support/
* Added preliminary and not yet implemented layout friendly BTextView
constructors.
* I will try to handle the insets imposed by BTextView::fTextRect a bit
differently when used inside the new layout management framework. For this,
I added BTextView::SetInsets() and GetInsets(). SetInsets() doesn't do
anything yet.

So far, everything seems to work still... ;-)


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


# c56a21ed 19-Aug-2008 Alexandre Deckner <alex@zappotek.com>

- Made multi-selection modifier semantics consistent with most OS's out there. See #1255,
please shout if you've got anything against that :)


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


# 8a588970 25-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- HiliteDropTarget was broken, it used a trick to avoid unselecting already selected items but assumed every
call to HiliteDropTarget(true) and HiliteDropTarget(false) would come in pair on the same target.

Fixes #2453 and #1793


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


# 96f8dfae 24-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Some view mode transitions had to be handled specially: kScaleIconMode -> kScaleIconMode,
kMiniIconMode -> kScaleIconMode, kIconMode -> kScaleIconMode.

Switching the mode to kScaleIconMode uses a special code path that resets the view origin,
which wouldn't get a chance to be stored/restored. Other icon mode don't need to save/restore
their origin except when going to or coming from kListMode.

This fixes #2441, although i just discovered the same problem when using SwitchDir() (single
window navigation)


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


# 491a3293 12-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- AddPoses didn't check for the ShowDiskIcon() option when deciding to AddRootPoses.

When changing to icon mode with a size other than 32 (ie: kScaleIconMode) PoseView calls Refresh() and all the poses are
removed and loaded again (PoseView.cpp line 1995). This called AddPoses but didn't check for ShowDiskIcon(). The Disks icon
was shown on startup though, since Tracker uses another code path when starting (caching?).

This fixes #1833.


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


# ed27e7ae 09-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Scrollbar proportions computation was wrong in icon mode. The problem showed when a folder contained few icons regrouped in a small area (Extent() smaller than Bounds()). The viewable extent is
always Bounds() now.

This fixes #361, again we're better than R5! Although in this test case, the scrollbars shouldn't be activated in the first place. In icon mode the poseview is still putting too much white space on
the left (x<0) and make the scrollbars show. Fix is almost ready :-)


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


# 9abdb222 30-May-2008 Axel Dörfler <axeld@pinc-software.de>

* PoseView waited for 200 ms after a B_META_MIME_CHANGED message was evaluated
to give other windows the opportunity to mark the icon invalid before
recaching it.
* Since we currently update all app MIME types on first boot, over 400 messages
are generated, so that delay easily caused the message queue to get full.
* I've now reduced the wait to 10 ms, and also call BWindow::UpdateIfNeeded()
afterwards, which empties the message port, too. This fixes bug #2212.
* Note though, this should be handled completely different to make it really
work right.


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


# 873066a8 30-May-2008 Axel Dörfler <axeld@pinc-software.de>

A bit of cleanup.


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


# 351b7a2d 25-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Added B_WATCH_INTERIM_STAT, and B_STAT_INTERIM_UPDATE definitions to
NodeMonitor.h.
* The latter will be set in "statFields" for interim updates when you have
asked to get them via the former.
* BFS now uses the B_STAT_INTERIM_UPDATE flag for sending updates to actively
written files.
* This makes us more compatible with BeOS again; if you only asked for
B_WATCH_STAT, you will now only receive a notification if the file in
question has been closed.
* Tracker now uses B_WATCH_INTERIM_STAT to always get all updates (ie.
downloading a file will update its size and modification time in Tracker
periodically during the download).
* Wether "needsTrimming" was true or not has no influence on wether or not
the size index needs to be updated in BFS - only the actual file size is
stored there, not the on-disk size.
* Added a TODO comment in Inode::WriteAt() that it would actually need to
update the size index when changing the file size, not when the file has
been closed (but that's probably too slow).


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


# 7b95b37c 05-Feb-2008 Stephan Aßmus <superstippi@gmx.de>

Make the Desktop window check the Deskbar frame only every half a second,
use a cached value otherwise. Should speed up icon placement when Tracker
starts.


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


# 46c6a221 11-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

Files that were created in the future (time zone issues, or whatever)
shouldn't be regarded recent either.


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


# f1b05aa5 10-Jan-2008 Michael Lotz <mmlr@mlotz.ch>

Fix syntax error.

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


# 978e434d 10-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Finally nailed down and fixed #355: apparently, if the pose info attribute
couldn't be read from a file, Tracker would try 10 times with a 10 ms
timeout - but only if the creation time equals the modification time!
That was obviously supposed to be a check if the file was recent...
Now that computers are faster (even when running Haiku), it may
actually take less than one second to copy a file, so most files on
the Haiku image satisfied this thoughtful and future-proof check.
(And no, even the original BFS does not automatically increase the
modified time on close.)
* Now, mmlr came up with a better check: we just check the file's
creation time against the current time to see if it's a recent file.
That should work a bit more reliable :-)


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


# 1de41c15 06-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* fixed tracker single click selection.

If I may say so, I find this code extremely messy and in desperate need for
refactoring. The bad news is that selection flickers now - the columns which
don't need to be drawn at all. I printed some debugging info in
BTextWidget::Draw() and it appears that for a single selection state change,
at least four invokations of BTextWidget::Draw() will result. Sometimes many
more. Since the code calculated the dirty rects wrongly in many places, it
appears that this bug might not have shown before. Like I said, the code is
a mess and there is not a single place for invalidating poses, so I am not
surprised why tons of invalidations arrive. :-/ Maybe I should make myself
more familiar with Tracker... or revert my text outline patch. :-P


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


# 5c34aef7 22-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

changed the meaning of the "icon view label background" Tracker setting:
* it is replaced by a "icon view label outline" feature that renders a black
or white outline around the text of a label under an icon. This can be used
for background images that have a lot of contrast and is visually more
pleasing (IMHO) than the text box in the workspace color (but the outline
could of course still be improved as well)
the outline or "false bold width" feature is a new BFont feature in Haiku
* Tracker appeared to have a disabled feature to install default background
images, I enabled this feature and rewrote it a bit to use our big logo
from the artwork folder, the placement is for 800x600, so not optimal for
larger desktops, but at least it is shown by default on new installations
or rather "fresh" images
* changed the way the dotted underline is rendered under links, accidentally,
this fixes the bug that it was not dotted at all since a while, which is
a bug in app_server or BView not tracking the need to update the drawing
pattern in certain situations (this bug needs to be fixed too of course)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22040 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


# eeb608e1 26-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* StringFromStream() did not work correctly for empty strings (messed up the stream
position).
* StringFromStream() called BString::LockBuffer() with "length", but touched "length + 1"
bytes.
* Prepared for the new "display as" FileTypes feature.
* The "DefaultQueryTemplate" folder now adds the MIME type of the folder to the
attribute menu for simplified editing (before, you had to move a file with a
matching file type into that folder to be able to add the attributes you likely
wanted to see).


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


# 687e327b 19-Jun-2007 Michael Lotz <mmlr@mlotz.ch>

Reworked the handling of periodically updated poses (currently only ones with a volume space bar):

* Addad global list where poses that need periodic updates can be registered with a callback
* Use this mechanism for poses with a volume space bar
* Create only one BVolume when the BPose is created for a volume, instead of every time the free space is calculated
* On Pulse() the global list is used to update all of the registered periodic update poses
* As the poses know their volume, it is no longer necessary to use a BVolumeRoster to loop through each volume on each Pulse()
* Removed the now superfluous SendNotices() mechanism
* Removed corresponding watching / handling of these notices in BPoseView

The BPoseView did a linear search for each volume pose on each Pulse() before. What's more it did this once for each mounted volume as it did get one individual notice for each of them. To get these volumes a BVolumeRoster was used to loop through the volumes, but then the BPose did still create a new BVolume to actually calculate the free space! I'm surprised that it did not suck away more performance with this method...

Anyway, this should bring down BVolume construction and update overhead down to a minimum and hopefully fix ticket #1247.

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


# 77974ff1 06-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

some forgotten fVariable -> sVariable renaming


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


# 67fb7cd0 28-Mar-2007 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


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


# f6a62205 02-Feb-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

Fixed comment style. :)


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


# f70737c1 01-Feb-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

Fixed (*crossing fingers* :) the probably most complicated deadlock in Haiku's history...Axel, am I exaggerating? :)
I've tested it and it seems to work. Could someone else please confirm that everything still works well?

Hmm, I'm still wondering why Axel took the time to suggest a possible solution to me instead of fixing it himself. There must be a catch. ;)


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


# 5f5d917a 24-Jan-2007 Ryan Leavengood <leavengood@gmail.com>

Your wish is my command: now only removable read-only volumes have their
desktops integrated in Tracker.


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


# ebe10933 14-Sep-2006 Stephan Aßmus <superstippi@gmx.de>

* when the group of dragged icons was a bit larger, the
bitmap was not completely transparent, but had a faint
shadow, I removed this, though it seemed to be on purpose,
I have no idea why... it looked like a bug


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


# 7fb6186f 29-Aug-2006 Stephan Aßmus <superstippi@gmx.de>

* integration of vector icons with the registrar and the mime data base
* additional versions of SetIcon[ForType] and GetIcon[ForType] in BMimeType
and BAppFileInfo, which handle flat vector icon data
* changes in Tracker to support scalable icons (currently broken for
non-vector icons and needs cleanup) and drawing icons correctly with alpha
channel (large parts of this work done by Michael Lotz)

If someone feels like looking over the changes, that would be much
appreciated! :-)


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


# f8262c2b 27-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

sync to rev 1.62 from OT rep: use the event time instead of the current system time for appending or starting a new match when typing ahead to select a pose

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


# 269d3bd5 11-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Imported PoseView.cpp 1.61, OpenWithWindow.cpp 1.8, and OpenWithWindow.h 1.3
from OpenTracker CVS.
This fixes bug #354.


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


# 7befa79a 01-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Imported SettingsViews.cpp 1.10, FilePanelPriv.cpp 1.14, TrackerSettingsWindow.cpp 1.7,
SettingsViews.h 1.8, FSClipboard.cpp 1.12, PoseView.cpp 1.60,
TrackerSettingsWindow.h 1.2, TrackerSettings.cpp 1.11 from the OpenTracker repository.


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


# 693f381e 31-May-2006 Stephan Aßmus <superstippi@gmx.de>

Fixed a weird Tracker bug, fOkToMapIcons was initialized to "true", but
I have no idea what sense this makes. When switching from list mode to
icon mode, some poses had their locations set to location "infinity",
because MapToNewIconMode did a division by zero. This resulted in feeding
the scrollbars a totally insane range.


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


# f15ba337 08-Jan-2006 Stephan Aßmus <superstippi@gmx.de>

synced with version 1.59 of the OpenTracker rep

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15877 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


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

More GCC 4 fixes by Ingo Weinhold - appeared because of the recent removal
of new/typeinfo/exception from our headers.
Rearranged the IconCache node_ref hash computation to be padding-resistant
(at least on PPC, node_ref is 16 bytes long, not 12 as it is with x86 and GCC 2).


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


# 4a71b881 14-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Final GCC 4 fixes by Ingo Weinhold (were not visible before, due to a missing -no-undefined).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14918 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.


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

Tracker: Made list element spacing relative to font size.

* Instead of always adding two pixels, we now multiply the size with 1.1.


# 7cef8ca2fe55d93634b331bcb8e2e5d8184720d8 10-Aug-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Fix regression introduced in hrev49011.

If the view fails to lock because it is actually gone, we obviously
can't use it to return the container, so delete it directly in that
case.

Fixes #12072 and probably #11982 which would then be a duplicate.


# b46999bc02ebb329d564730ef40e260b22704831 21-Jul-2015 Axel Dörfler <axeld@pinc-software.de>

Tracker: page down/up now selects poses.

* When pressing shift it will also extend the selection to the bottom
or the top of the page.
* It does not deselect anything yet, but Tracker's selection logic is
pretty questionable, anyway, and it's way too complicated to
implement this nicely as of now.


# 29355b23a73da4ccf6625aeea92c028fba77ae9f 17-Jun-2015 Janus <janus2@ymail.com>

Tracker: reduce distance between rows with big fonts


# 38b2eae6db31e23440a40f48d7d8da7bcb791825 14-Jun-2015 Janus <janus2@ymail.com>

Tracker: fix selection glitch with some fonts

* This problem was present for the fonts with total height
greater than 19 and smaller than 20.
* Reduce distance between row with big fonts.
* Fixes #11615.


# 37335989120ad8f18a9d3d2e4c8489410c0fc4e5 26-Apr-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete more non-Haiku code.


# 2bd0b27f5d9720741ba72afa21de0470b7521d13 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Fix use-after-free by ref filter of OpenWithPoseView.

Commit ea8b1e14 changed OpenWithPoseView from using ShouldShowPose for
filtering poses to a BRefFilter. The introduced ref filter used the
iterator handed to the BPoseView::AddPosesTask which took ownership
of that iterator and deleted it as soon as it was done. Since actually
adding the poses as well as further filtering is asynchronous and
happens after the AddPosesTask completes, the iterator was used after
it was already deleted.

Introduce BPoseView::ReturnDirentIterator() that is called after the
AddPosesTask is complete. The default version deletes the iterator,
the OpenWithPoseView overrides it and does nothing, it deletes the
iterator in the destructor instead.

Also fix leaking the ref filter. The BPoseView does not take ownership
of the filter as it usually comes from a BFilePanel which is documented
to not take ownership.


# 0a74a00526901d507086cac0592c9940efc24e60 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Remove two outdated comments, whitespace cleanup.


# d854f235bc70c5d83f973134fd1a4d2c8629784b 08-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Tracker: Remove an old PPC STL workaround.


# 4e3572635487f5a4fb948640fdeb747f47750e4a 29-Mar-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: add "hide dotfiles" option to the GUI & enable it by default.

Changing this many lines of code to add a single boolean preference
is absolutely insane. We need a new preference-tracking system, and
one that can be reused in other applications, too.

Fixes #9200.


# 7ef62fb6c2485f91ba49b0cde5e73e62687375e9 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Style fixes

* Style fixes to QueryContainerWindow.h
* Style fixes to ContainerWindow
* Style fixes to Model
* Style fixes to Tracker
* Style fixes to PoseView
- Most of the changes come from unindenting the code


# 8b03727a4ed7d75f5cb0f1cd23245c89287c194b 28-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Revert "Tracker: Fix memory leak"

This reverts commit de7aed2b5671d54c3557fad447ba60ffe17ef9bb. It turns out
that this causes crashes when trying to navigate in directories with
type-ahead filtering enabled. (possibly related to the root cause of


# 9e78efbb4d21a6821be64e5053defd99ed364aea 27-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete un-needed #includes.

All of these header files are already included by the .h file that
corresponds to the .cpp file.


# 7d515bdbd6bf24db5f92094cda34c301ab8d5665 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: handle copying files from virtual directories

If virtual directory first resolve the symlink before copying/moving/linking the file.

Fixes #11091

R1/B1 bug squashed!


# 27c574670666e5b3b6670909f993ac3927b7290e 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Move static functions up

Rename CopySelectionListToBListAsEntryRefs to CopySelectionListToEntryRefList
to reflect that it no longer copies to a BList but instead to a BObjectList<entry_ref>


# 4c47562f60c3b63b181d3742eaf0fbe87713ae2e 27-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Minor style fixes to PoseView


# f0647531ff75085feba097d97bc0b49c521bcd63 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: link to TargetLibsupc++


# 370ee87a8e1fb6ce8edba70a7eb6f99780a40c4b 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: replace max_c with std::max

Remove using statements and put map include in its proper place


# de7aed2b5671d54c3557fad447ba60ffe17ef9bb 26-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Fix memory leak

When items were removed from fFilteredPoseList as opposed to fPoseList, the
items were not automatically deleted and thus leaked. By setting the BObjectList
to automatically delete them on removal (by setting the deleteIfOwned paramete
to true) we avoid this leak.


# 8c2813c1871f922248d187c377ccd4a3176b6432 25-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Style fixes


# 5f26850cbaf16e00ed594b1781f2bc195c4c0cac 25-Feb-2015 John Scipione <jscipione@gmail.com>

Tracker: Small style fixes


# 2f5fe16a3e5f838f26b296a2f2926cce407f014f 14-Feb-2015 Augustin Cavalier <waddlesplash@gmail.com>

Tracker: delete #ifndef __HAIKU__ code.

Since tracker_layout has been merged, this is pretty useless now.
Should result in no change to generated assembly.


# 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).


# 529cd177b573aaba391c8adc9c9f5ad76a14bf81 04-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

BFilePanel: allow to change the node flavors

There doesn't seem to be anything ini the implementation that would
cause a problem, as long as you don't try to change this while the
window is already open.


# 2f60dea53ae5e08baeae2c4e41c89a8d2e74aaa6 29-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Throw exception on assert failure

... in situations where a NULL pointer dereference was vital to the
functioning of the method we use a stronger assert that throws an
exception on failure. This is accomplished by a new method in
Utilities.cpp, ThrowOnAssert().

None of these conditions should ever be true, if they are it means that
the code is written improperly and would have resulted in a NULL
dereference and undefined behavior (most likely a crash) before.

Most instances of ThrowOnAssert() either replace an ASSERT followed
by a dereference or an early return that covered the error.

Also remove _ThrowOnErrorWithMessage() which wasn't being used.


# 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.


# 95ef54053563d2f672086aaa32b0131f7b580677 25-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Unchecked dynamic_cast, CID 611229


# a35bd7b065fa9e15b6ca93f5a0cc59a9cf172afa 25-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Unchecked dynamic_cast, CID 600452


# 3aeed6607cd07762c0e709633c012b3a632dbad9 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 3188d3d0bfea70a9218c7cc700c4bd3a4c211f4d 23-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Remove logically dead code

Replace with an ASSERT that srcWindow != NULL by the time we've gotten
this far.

CID 1228649 and CID 1228650


# a892df239f1f45d79fa37eb3c560c9d0e1253272 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Fix several unchecked return values

CID611191, CID611192, CID611193


# 5969c5d77930d3d4466df7691bed69f4ce12bfc0 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: Fix use after free

CID510586


# 1933335b06d9fb1644d0ecfc1e2f7b6753ac6814 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix 2 uninitialized scalers

CID610119


# ba24adb2723ef9151a6786e9d56f34a2450edf30 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix 2 unbounded copies

CID609045


# d308d1fa8244387db2f38596cbcb5408b5fb9ac8 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unchecked dynamic_casts

CID603130, CID603131, CID603132


# 62de0e04be70156488d3ae1e17314845a73494cb 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unchecked return values

Check that LockLooper() succeeds

CID611190, CID611194, CID602477


# dc3cfca45bc8a4cb314ace17e6a143c07267e79d 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix unused pointers

CID610474, CID610475


# 20e3467eae2e5b867500645738d389b7bd8dc0e4 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: fix dereference after NULL checks

CID600503, CID600504, CID600505


# 0db0308b08efa3b95e1ee849c7759541c26f9c28 18-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to PoseView.cpp

Compare with NULL explictly


# d5868b5976a3c2f35ab9451dacb6783b85576f20 26-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to PoseView

Variable renaming for consistency and clarity


# d7e682113776632e5c04a6558eca0c5650a164e4 04-Jul-2014 John Scipione <jscipione@gmail.com>

Tracker: miscellaneous style fixes


# 091db3a99de1a6123dae8cd1b21e0595d7a3e2c9 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Check if selectedPose is NULL

... before using it.


# 14bf930b9989419a16ee4f1dbbd0889b4191cdfd 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Check if selectedBounds is NULL

... before using it.


# 38181640e9258b4c7b5cad885710b9f6f8730413 20-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: style fixes to PoseView class


# 9437e677ba3d5f813929944ae2b09fc37feb8d2d 09-Jun-2014 John Scipione <jscipione@gmail.com>

Tracker: Style fixes


# 9bd08d10ab9faa54fff5cc72619a3ca38e29632a 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Don't change selection if right-click

... inside a selection. If you click outside a selection extend the
selection to include the new items as Tracker normally would and
then pop up the dialogs.

Works with control-click as well, same utility function used.

Fixes #10449


# 80f4300a722baf5d9556784d44397bc869a53579 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: Make context menu work with control-click

in additional to secondary mouse button click, uses same utility function.


# 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.


# 6be6813f231718561fd4750f2e31f0099f523b1b 01-Feb-2014 John Scipione <jscipione@gmail.com>

Tracker: swap using std::swap()


# fcb24e82c4ca0d0fd25eba964e0aba015abdb15f 31-Jan-2014 John Scipione <jscipione@gmail.com>

Tracker: Only open items if doubleclick w/ primary MB

Also rename fLastClickPt to fLastClickPoint


# 9d33fe6896cb72c8f09e5d871077d8aa98118118 31-Jan-2014 John Scipione <jscipione@gmail.com>

Tracker: Style fixes to BPoseView


# 80c9ee9c3f7dc0e34ba8995bce9c16825a89e8b7 24-Dec-2013 Freeman Lou <freemanlou2430@Yahoo.com>

Tracker: exclude trash from selection.

Signed-off-by: Rene Gollent <rene@gollent.com>


# 1c29b26e7c7eb94ee125315eca5a94265f613420 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add virtual directory feature to Tracker

Similar to stored queries, files of the virtual directory type behave
like directories -- i.e. they open in a list-mode Tracker window and
show up as an item with submenu in navigation menus. The file itself is
a plain text file in driver settings format. It can have an arbitrary
number of "directory" entries, which specify the paths of (actual)
directories for which the virtual directory provides a merged view. The
view will not show duplicate entries. For non-directory entries the
first one encountered (according to the order the directory paths are
specified in the file) will be shown. A subdirectory entry will again
behave like a virtual directory.

The support in Tracker isn't perfect yet. I'm afraid major refactoring
would be necessary to get it there.

The virtual directory file type uses a differently colored version of
the folder icon. Alternatives welcome.


# de85051c81a74f82d86cc82ec25ead5374a83844 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::AttributeChanged(): additional check in icon case

Model::AttrChanged() requires the model to be open and so does
IconCache::IconChanged(), so add the check. Not sure if the block is
ever executed now (or ever worked before). This does at least prevent
asserts being triggered when compiled with debugging enabled.


# ddd775f5ac1bf7dee15dd492500b50b935b71935 20-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::FSNotification(): fix issue in debug build


# 535207ae9a3e759ac960379905a5e1661174eb7c 19-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPoseView::AddPosesTask(): fix count checks

In case GetNextDirents() returned an error, the wrong blocks were
executed.


# a53db1893722eb4b5b25d5198113f8bf2a809fa3 11-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix #9663.

When clearing the filter state, don't disable filtering entirely if we
have a ref filter present. Otherwise, it won't be invoked again
until the next time a typeahead filter is engaged.


# 163a39483387c5db4156dfcf36e4b48156df30a6 09-Feb-2013 Humdinger <humdingerb@gmail.com>

Revert "Renamed Tracker option "Don't move files to Trash" (#9352)"

This reverts commit 45f77dcd7029914ccd99178dfb333eb68c7af9e5.


# 45f77dcd7029914ccd99178dfb333eb68c7af9e5 06-Jan-2013 Humdinger <humdingerb@gmail.com>

Renamed Tracker option "Don't move files to Trash" (#9352)

Renamed that option as it is the only negatively phrased to
"Move deleted files to Trash first" and also the option below
that to "Ask before deleting for good".
Also renamed every function name etc. in that regard and also
settings string of the Tracker settings file.


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

Automatic whitespace cleanup. No functional change.


# 205cf6950c4e615f502501f6667267edf8b482db 24-Dec-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Force Identify - don't require holding shift (#4857)

Don't require to hold shift when clicking on force identify,
can now be released after popup menu have appeared.


# 3fbf5d68095bfbb82dbb876130fb66dd52a6dd1e 23-Dec-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Drawing artifact (#6513)

After switching from outline only selection mode to transparent rectangle,
a drawing artifact could occur because the last selection rectangle wasn't
reset properly. On following update, Tracker thought a selection rectangle
was still to be shown.


# dbe3088153f100f652735b495d358f716cb2f8c1 25-Nov-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Tracker crashes in KeyDown() if there are no models associated with the PoseView.

Happens in special windows, such as OpenWith Window, that do have a PoseView not associated
with a model. Fixes #8160.


# 151b6997c05984b9b7cb1147353c285bb83dfde5 15-Sep-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Moving columns could make an horizontal scrollbar appear


# ed63a5d20c7c4be88812d683bb3d563905297003 18-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Double-Click simplification

Double-click check was redoing what is essentially already done in input_server.

The way we were doing it, right clicking (or pressing a different button for the second click,
for that matter) wasn't clearing the fields remembered and thus not breaking the sequence.
So a third click returning to the correct sequence (in a short time) would get recognized
as a valid second click. So a quick left-right-left would be seen by that method as left-left.

Also, clean up a previous fix I committed. Removed the introduced Origin() method as it
is the LeftTop() method I was interested in and it is already existing.

Fix #8714


# c38375376d0190b7aec2c25ed691123395d0fcb6 14-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: TextWidget editing flaws

TextWidget tried to detect if the editing box would span outside the PoseView,
but it was using an hardcoded value of 1 for the minimum left value. But in Icon mode,
negative values can occur. Change to use the view's origin (top left corner of the view).


# 8cbdf82a0a71dd2ffe7e6522ea102f9896554162 14-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Drawing glitch when created Pose is first in PoseView

Due to clipping of a rect to match the view bounds, there was a confusion
as to whether the rect was at the top of the view bounds, or above the view
bounds as both met the condition.

Fixes #8876.


# 7ad72ef6eae1ad8a2ec03043055ca0e649b11f80 12-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: avoid duplication of poses

When filtered, clear the FilteredPoseList before re-filling it.

Fixes #8875.


# 39433058f77bd2c7167c855b6ad695396db57774 11-Aug-2012 Rene Gollent <anevilyak@gmail.com>

Fix ticket #8858.

- When an Identify/Force Identify request is made in Tracker, if the target
is a link, resolve it to its destination first. Fixes #8858.
- Have mime_update.sh explicitly mimeset the welcome/user guide scripts.


# c01e918c0a1ed600180bde084f51284c756a6d1c 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Cancel editing of Widget if sorting of poses occured.

Since the position of the widget was registered at the first click,
it likely changed and its causing drawing afterfacts (it's editing at
its old location).


# 66c09a35546f869af3fef1968a3c423d04cc7495 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Delayed widget editing, crash avoidance

Make the PoseView stop watching a TextWidget if it's being deleted.
Could happen in race conditions for example, if you click to edit
the name widget of a pose while the pose is being deleted soon after.


# 4cf0af0607c9b5ad89fdcb5416725e4ae2eb7890 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Additional cases to cancel double-click detection

Don't wait for a potential second click (and then trigger Widget editing) when:

1. a click occurs on a different pose, on a 'pose-less' area or when right clicking
2. when you start dragging something.


# 741e52463a4e1df441230669a38f1bb8832f9674 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Double-click management changes

Make the "second click of a double-click" detection waiting time async. In other words
(hopefully clearer), when the TextWidget gets a click, it register itself, recording the time,
and it will get the editing order later as a callback from PoseView when the delay without any
further click expires.

Fixes #8818 and maybe others.


# e0e641c07817564664d01a01db95ce2af5f4c63d 09-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Style fixes, should have no functional change


# 11a36918ee84cb21c5965f538a24851a00897ee0 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView::AddPosesTask - no need to open the node at this point


# aafb6faf57de4b30be7bb10c5a70245498d7344a 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: crash related to PoseView containing many files

Due to a previous change in the incrementation of models in AddPosesTask,
PoseView containing large number of poses were prone to crash in ClearPoses().

Gaps in PoseList or other invalid memory area were introduced.

Thanks to x-ist for precious assistance in spotting those issues!


# 0bc1be3252ac6e87e2b046fb06f8d36425c23b51 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: Fix crash in FilePanel

Again, a regression fix. Under some circumstance, fFiltering was wrongly
set. Also, the node wasn't open before checking the BRefFilter and some
filters expected that to be.


# 5489384d4538de742017aa912222e4921b4673bb 08-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: crash fix in FilePanel

Regression of hrev44493, file panel crashed when changing dir and
filtering being disabled (sorry!)

Also fix the widget editing when filtering is activated. Now renaming
a file/folder and causing it to 'fall off' the filter does work.


# c2535dc48a28016ead05c4ebf522f018dc770429 07-Aug-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: various issues regarding filtering

1. A BRefFilter-ed PoseView wouldn't keep monitoring files after its opening
thus not picking up files that happen to fit the filter thereafter (mime attr
updated, etc..)
2. A filtered PoseView wouldn't get updated when:
a) a column was added or removed
b) a file was renamed
c) a file was moved
3. Harmonize the way BRefFiltering and Type-ahead filtering are working. Both
can be used together.
4. The handler for AttributeChanged() wasn't working properly if link(s) of a
changed model was/were its siblings.
5. Broken links weren't detected/updated (it nows monitor the lost target
parent directory, and wait for the target creation to show the link fixed)

This is a big change (even more considering the 'critical-ness' of the component)
Testing is MUCH welcome!

Should fix #4254, #5381, #1717 (and maybe others)


# aed35104852941f0f6f3d1dcc5338b5f337d0a3c 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# adf8818ec004e8a20614523f3e893303ea318642 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Compilation fixes for Terminal, add to image.

It runs, but has shown up various bugs: app_server crashes, kernel
panics, rendering problems. Working on fixing these now.


# 688e878807fee1750d876001cff4f1ce41da3a79 28-Jul-2012 Ryan Leavengood <leavengood@gmail.com>

Don't check for double click if it was a right mouse click.

Fixes #8714.


# e51854a127450ed5f1dc33ec350a00f1deaff355 15-Jul-2012 John Scipione <jscipione@gmail.com>

Add 96x96 and 128x128 icon sizes to tracker including scaling of BeOS icons using scale3x and scale4x algorithms.


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

WIP: Yet more style fixes, mostly 80 char violations.


# 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


# b866f1fa5493c354c9425b17e6563aac540406ab 24-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Files created from templates are now monitored

fixes #2796.


# 4c45f003ede5fdc1ca9da3f51a8b7d5764a0e0a2 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Right clicking on Pose triggered Rename prompts

Right clicking on a Pose to get the contextual menu would quite often
trigger a rename action of that pose. Don't allow to rename a pose
by releasing the secondary mouse button.


# fb678bc3d02979476bd15a181ba053ae77557705 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Sorting in filtered view led to crash

Fixes #6992.


# c082e8f2e24d1855ef255a5292b259acbc5ba7d9 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Variation between Saved and Restored widths

When restored, an overlap was wrongly detected in offsets for
failure to take into account the width of the border line.

This was causing the horizontal scrollbar to show unnecessarily.


# 5cdd07a8148b04cd1b7e29778ec0661df7dbe46d 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Optimisation of AddonMenu menu construction

1. Build the list of mimetypes of files in selection only once and
reuse it for all further tests.

2. Fix a regression introduced in hrev44384 where the MimeType()
wouldn't get recognized when just changed by tracker (by that same
right click). It would be on subsequent clicks.

3. Rename the static map variable to better fit our coding style
and be more understandable.


# 516cac7817d0b2f54e8b59acfff5cf803ef7d2ab 23-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Coding style violations fixes and typos

No functional changes, thanks Axel!


# 674ff0df2f2eb00cbc78b4384fcf5b148a2139ff 22-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Various sorting issues in Tracker

When sorting files by Modified dates, right clicking on a file was leading
to a sorting issue where files were changing positions (without reason).

1. Any changes to stats (size, modification, creation, mode) was triggering
the sorting. Now only stats fields currently used as a Sort criteria will
trigger such event.

2. The Mimeset of file was set (in case of unknown file format) once per checked
add-on when building AddOn Menu. Now it's checked once per file in selection.
(so, once per file, rather then once per file, per add-on).

3. Now rely on registrar to force the mimeset (to trigger the sniffer in case
the attribute already exist) rather than trying to duplicate the feature in Tracker.

4. When Sorting, if there is a old position known, check if it's working by looking
if you should come after the previous item, and before the following item. Previously,
the item would be pushed at the top if the group of item all fitting the criteria
(same file size, same file kind, etc.. depending on the sorting criteria).

Fixes #8478.


# 1236c746afccdcf1ef33244cb1da655f3cf596dd 21-Jul-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: a file leaving Trash won't appear in QueryPoseView

Fixing #1592.

A feedback FSNotification()->EntryMoved->PendingNodeMonitorCache->FSNotification
was seemingly introducing some race condition, as it was working 1 time
on several tries.


# 4dad975dda68795852e3dea27642061776a241e6 06-May-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Consider extra column margin in PoseView::Extent()

In List Mode, consider the extra margin added to the right of
the last column when computing the Extent of the PoseView. This
was causing the ResizeToFit to resize a bit too small.

Fixes #4318


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 3da13b803853a36868b667a0377237fef9e48e02 07-Apr-2012 Rene Gollent <anevilyak@gmail.com>

Fix typeahead cancellation in file panels.

- Add accessor to PoseView that reports whether the view is currently
typeahead filtering.
- Use said accessor in the file panel's filter in order to detect whether
to tell the latter to cancel filtering vs closing the panel.

Fixes #8140.


# 581a96616a5b23926da6068ae61beb00be559fe8 05-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Tracker: Fix inconsistent "Open parent" behaviour

1. When in /boot, you couldn't go to the parent (which is fine by itself),
but the menu item wasn't disabled.

2. In Single Window Browsing, doing "Open parent" wasn't respecting that
setting and was opening new windows.

3. In filepanel, when navigating to Desktop folder, the "Go to parent" was
still proposed even though it would do nothing choosing it.

4. Opening a Pose in Single Window Browsing was repopulating the menus and
putting the shortcuts again. That was an issue if Navigator bar was used
since it conflicts with its shortcuts.

Fixing ticket #6851.


# d390c065518bfd467544eb5e4c699258c616287a 04-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

PoseView: Fix assertion in InitDirentIterator

The dynamic_cast was called twice, and the assert was
done on the first attempt. Now it just cast once, assert on this
and pass it further as before.

CID 3122.


# 9cf506a2bfc6c4f1364d4c6028d4a6e09af043aa 18-Jul-2011 Philippe Saint-Pierre <stpere@gmail.com>

Tracker:

* Add "Arrange By" submenu in Window menu.
* You can arrange by the same fields you can sort by in list view. Changing your sorting order in list view will change the Arrange By choice when you enter icon view and vice-versa.
* Support ReverseSort order.
* Keep the clean-up feature, but it's now under the Arrange By menu.

Fixing ticket #1349.



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


# def39abd747d7e9f5e3866fc47d4c211cc21db83 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Finally finish implementing proper selection rect autoscroll to work with the
new asynchronous mouse tracking. Sorry for the delay. Up to now it was needing
mouse moves to autoscroll, it now behaves as before.

* Removed check that was disabling regular drag'n'drop auto-scrolling when
inactive. I don't see an obvious reason why that was done, as it's just handy
and is consistent with the other behaviors when inactive.

Note, i gotta love those comments that do anything but help, good example of
how not to comment :) i.e don't comment about what will happen when the
adjacent code won't be executed (especially in a case that can't happen).
My brain almost exploded a second time trying to explain that!

// selection scrolling will also work if the window is inactive
Should read:
// disable drag'n'drop auto scrolling when window is inactive




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


# c98a59c6538ce5a7d0072d1bc563bf2d202a9a9d 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Don't show packagefs on desktop or in disks window

More generally: Any volume that is mounted at a directory of a
persistent volume is not shown on the desktop or the disks window any
longer.


# df1c9e984e5a9a9cb5cbafb7a05de6a6126dd70b 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Slight renamings, no functional changes.



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


# 29769e04520187086e3fed9208d6c0e2b106c6cf 17-Jul-2011 Alexandre Deckner <alex@zappotek.com>

* Don't do anything in MouseIdle if we're not dragging a message.

This especially avoid bringing tracker windows up to front when staying idle
over a tracker window while holding down a button. This could happen when
hovering while still holding a scroll thumb of another overlapping window.

Fixes regression #7829 introduced in r41892

* Also properly reinitialise the cached dragMessage on B_EXITED_VIEW,
otherwise it would still think it is dragging and thus still pass through my
above fix.

I'd like to cleanup the drag message caching mechanism as it's not
pretty in my opinion. Possibly even adding it to BView.


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


# 2e687c4792b88029a03b44b573e2f20bf42f0c57 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

No need to call DragStart() if we have no drag message yet.



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


# 7560163d8cbaa64569cdff69b2b565bbdec0d3bd 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Revert r42223 since it breaks some cases.
* Simplify handling a bit. Instead of more or less duplicating some of the
move logic from PoseView, simply construct an appropriate target model and
let PoseView's HandleDropCommon() take care of understanding what to do with
the drag message. This has the side effect that things like dropping a text
clipping message onto a target in an x-ray menu actually works as expected
now.



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


# ab6b173770fbf06b98cb73adc410d47493ec631e 17-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Slight relocation, no functional change.



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


# 5e90adf5d7d620d3623c877e010dab00d223daeb 17-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Fix regression introduced by r41892: DragStart() was called at the wrong time,
leading the drag message to contain nothing more than an empty B_MOUSE_IDLE
message. This broke several other cases of drag and drop which relied on it
containing the dragged refs. Fixes #7705.



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


# 6009abf2bd94f12ff244e81cf0da48a02b0cf384 05-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* One more fix needed for right click dragging. Ignore right mouse up if a drag
or long click happened between the initial mouse down and the present mouse up.
Tried to avoid this solution by other means but wasn't working in a corner case,
at least it's clear what's the code is doing.



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


# f2068166ad1255dbd705d0ef165fd618f1833aa0 04-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* Fix regression spotted by Humdinger. Emulate right click dragging like it
used to work before, i.e right mouse button dragging works and the context
menu shows on mouse up if not dragged. I guess that at some point we'll rethink
all the mouse gestures we support and maybe simplify a bit, like dropping
long click support (as an emulated right button), and possibly
separating some features via user settings if needed.



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


# 596bb6891a80782c057a54f77c72060671761248 03-Jun-2011 Alexandre Deckner <alex@zappotek.com>

* Finally rewrote the filthy, busy-looping, mouse tracking in Tracker.
The new asynchronous tracking doesn't lock the view and makes desktop
replicants happy while clicking and dragging around. Fixes #880, #7241
and certainly other tickets, that i will revisit, about refresh locks
on the desktop or mouse related bugs. Based on a reusable MessageFilter and the
recent B_MOUSE_IDLE message. Some parts are ported from the old code
and could use further simplification.

There should be no intentional user fonctional change, except:
- slightly bigger threshold radius, shorter duration thresholds
(= 1.0 x the system-wide doubleclick setting)
- not reimplemented: quickening threshold when holding shift while dragging
a pose over a destination pose.

Some parts are ported from the old code and could use further simplification.
There is one known minor regression with autoscrolling while
rect-selecting but that will be better fixed with some changes to the
autoscroll code. Will address that ASAP. As for the unknown regressions,
please test :)


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


# ccb1117c85179f28b4ef01cbf12968619a1def80 06-May-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed a bug in BPoseView::CreatePoses() that Ingo found, but was apparently
too lazy to fix?!


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


# 5987b2a380151a1ddc4e168114f2df52873f8b3e 07-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Offer a 'Real name' column in Tracker list view mode, when set to show localized names. As discussed a while back. I honestly don't know if this is such a great idea after all. Name + real name is kind of silly. Ideally it would be labeled in a more logical way, or the feature should be dropped.

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


# 0e952e21c31644138f0d757d288a2c8a5c06af37 23-Feb-2011 Philippe Saint-Pierre <stpere@gmail.com>

If the template name was long enough, we would have exceeded the string size.

CID 9046


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


# b2d0aaa9e6a42005dedf68d614264fe53d9c4e62 31-Jan-2011 Rene Gollent <anevilyak@gmail.com>

Don't attempt to move the selection to the target window if the latter does not contain a poseview (as is the case for an info window). Resolves #7179.



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


# 915a7b8c247e1ed9182bd561df3e9856307e750c 19-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Make BObjectList<> publically available:
* cleaned up ObjectList.h
* switched several uses of new() to new(std::nothrow)
* moved ugly AsBList() hack into BObjectList<>::Private class and
adjusted all callers accordingly


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


# d277bc8294c86538a56957d2f0962f4f5542d661 05-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

Since the function keys don't serve any purpose yet, make F2 enter renaming
mode for the first selected item (i.e. just like Cmd-E). This makes Tracker
behave as Windows Explorer and at least Nautilus in Ubuntu.


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


# 1959f8502b64d2fe7533d907fc6a0efdd3bd147f 19-Oct-2010 Rene Gollent <anevilyak@gmail.com>

When trying to auto-place a pose, we need to short circuit if we're the
Desktop and the next available slot lies outside of the view bounds.
Otherwise we loop forever. Resolves ticket #5218.



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


# b8616583e414dbc42f6d78591e35ad1e5d67f9a0 18-Oct-2010 Rene Gollent <anevilyak@gmail.com>

Sort poses using std::stable_sort. Should resolve #6700.



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


# 7b80b5d5181053872dd475b1c559bc010914a31c 17-Sep-2010 Alexandre Deckner <alex@zappotek.com>

* Use multiple translate contexts in Tracker for easier translation


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


# 108f794c9749f5aef3e4f37591e65e1e7edcd76c 16-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by mt: Translate various yet untranslated strings in libtracker,
closes ticket #6374. Thanks a bunch!


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


# 606e627e76e4057dc22d257f98140ceed4ccf48c 15-Aug-2010 Rene Gollent <anevilyak@gmail.com>

Remove unnecessary NULL check (the view in question is created in all cases in InitCommon(), and is already dereferenced several times prior to the check in the function anyways).

Fixes CID 1078.



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


# 4a7b2e0484dc12783c1cf56dd23175ffb7c7649a 07-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Add FormatDateTime function to BLocale
* Use the function to localize the date/time in tracker.


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


# 1f34e928acb60a28c2343312ba738e4e9a434d8a 14-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Removed last remains of the OPEN_TRACKER define.
* Cleanup of unused include.


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


# a111096469c16e2caad09992e64bafe170ddf38a 13-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Minor style fixes, spaces vs tabs.


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


# 148f33f2069a264638f7a8cb6c16e613f8e7d044 13-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* More PoseView localization by T.Murai (a.k.a mt). Thanks a lot. (be careful with the 80 chars indenting though ;-)


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


# 4ed28a571a7d5f7f13b5b4636fabfeabdfddd40b 12-Jul-2010 Alexandre Deckner <alex@zappotek.com>

* Applied libtracker localization patch from T.Murai (a.k.a mt) with some modifications (see below).
* Functional modifications:
Reworked InfoWindow file size localization, the patch removed number formating (size in bytes) and was too complicated to my taste.
Replaced the uses of sprintf with the safer snprintf.
Changed signature to x-vnd.Haiku-libtracker instead of x-vnd.Haiku-libTracker (to be consistent with the binary name)
* Style modifications:
Reworked lots of 80 char indenting (probably due to the now shorter line lengths since your previous patch that wasn't using the macros)
Lots of missing brackets when "if's" becomes multiline.
Other minor fixes.

Noticed a few uses of FindItem on translated names that might become problematic someday. Added some TODO's regarding localization of file sizes. Localization might still be
optimized a bit regarding the produced en.catkeys

Note to translators: .catkeys files should be placed in haikusource/data/catalogs/kits/tracker though beware as the base en.catkeys might change
slightly in the next days.
Note to users: As with any other app you need to restart Tracker (or any aother app using libtracker's filepanels) for it to pick the locale setting. E.g: use 'quit an
application' and 'restart Tracker' from process controller.

Thanks a lot T.Murai


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


# 1e9e9da3891e2cd48b46eacee6aec2e11cd98b80 11-May-2010 Axel Dörfler <axeld@pinc-software.de>

* I'm not sure why it happens, but the drag bitmap offset was BPoint(2, 1) off
(that should be good enough for the current Tracker).
* Minor cleanup.


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


# 9c8f23673b646834b88ea4b2e27612a0898cce30 11-May-2010 Axel Dörfler <axeld@pinc-software.de>

* Never choose a target pose in UpdateDropTarget() that is part of the currently
dragged selection. This fixes the context menu popping up when you try to
move around an icon a few pixels only.


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


# ecdb5ec6689081bfb8efb9c44b15e69bf318e278 02-May-2010 Alexandre Deckner <alex@zappotek.com>

* Filter out B_INSERT and B_FUNCTION_KEY as they would end up in type ahead "default" case. Fixes #5609. Looking at all the not already caught keycodes, this should cover every cases.
+alphabranch


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


# 08b3ae9bb2bf3149b29647bb3bf3f310e1fdd8e0 02-May-2010 Alexandre Deckner <alex@zappotek.com>

* RemoveFromVSList was failing to actually remove some poses due to a buggy optimisation. This was causing calls on invalid poses in many places in the PoseView code (icon mode). This fixes #4322 (and duplicate #5780). This should also fix #3828. Please test.

I took the conservative approach and the penalty is really minimal if even not at all perceptible as i've measured. I decided to go this way as PoseView code is very fragile and depends on many of those "loose assertions" to be valid. This conservative approach also allows to confidently include the fix in alpha2:
+alphabranch

Besides those "wise" reasons, the thing is that i've wasted too many hours already this week and in the past due that VSPoseList/PoseList syncing fragility. I'm not willing to fix the optimisation of a broken design that i've already experimentally rewriten two times already, and that i (or any mentally sane person) will finally ditch sooner or later :)


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


# f7cf3195899d35c3674c214977a198994c781efe 29-Apr-2010 Rene Gollent <anevilyak@gmail.com>

PoseView::MoveSelectionInto() needs to check for the case that the source
window actually has a selection list to use. Certain actions can render it
possible to empty out the selection in mid drag-and-drop, which MoveSelectionInto
wasn't taking into account, leading to a crash.

Fixes ticket #5860.



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


# ab5fb573e5d473b9414545166651c7324a37c316 28-Apr-2010 Alexandre Deckner <alex@zappotek.com>

* Removed what finally looks like an old (and not needed anymore) workaround. That is, the sending of a message when dropping a pose over another one while its context menu is still showing. That was causing #4757 since poseview was receiving the dropped message two times.

I've been investigating the issue in depth, it's there since the first opentracker revision, so i even installed R5 and built/debugged opentracker to confirm it was indeed needed on R5. That would be another case of undocumented (misdocumented) workaround for an R5 bug, ie: BMenu would steal the drop message although the mouse isn't over it anymore (Stefano idea?). Heh if only i could reach the original Tracker devs :-D

I don't like when i don't understand a problem up to the last bit, but it should be reasonably safe for alpha2 +alphabranch


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


# 01e63caf83e2762c076de5745c18ba667ff4a9bd 21-Apr-2010 Rene Gollent <anevilyak@gmail.com>

When creating a new pose, the index offset at which it was inserted in list mode was never passed back. Consequently, when creating a new folder via the cmd+N shortcut (which immediately goes into edit mode), the TextWidget for editing would appear at the wrong location.

Fixes ticket #5774.

+alphabranch



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36408 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


# 7c0f5738b33a58712977111a27d67bbee3df6633 02-Mar-2010 Rene Gollent <anevilyak@gmail.com>

Remove Tracker's special DnD handling. Instead, BTextView/BTextControl now
honors drag messages containing entry refs and resolves the path of the first
one contained. Will work on a more sophisticated solution that would allow
optionally extracting the file text instead via right click drag context menu
when I have more time.



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


# ddee0943500330df0698c9c7361b77a025f08d26 01-Mar-2010 Rene Gollent <anevilyak@gmail.com>

Add an extra sanity check to Tracker's automatic text clipping extraction when
drag and dropping text files: before it would blindly read the entirety of the
file's text contents regardless of size, which probably led to more than a few
nasty surprises when someone attempted to drag very large (i.e. multimegabyte)
text files. We now clamp the amount of data we read to 64KB. Though it's
debatable if this feature is at all useful, since it may potentially be better
implemented by handling entry_refs in dropped messages in BTextView directly
(assuming a compatible type). Opinions welcome.



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


# f24e3c9f1ee88acd5c272891224f082f959c0e3c 21-Feb-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed warnings and coding style violations.


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


# 029f4e93174b64f4342decc9a8e2094323438fa9 02-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

* Add an inline CurrentPoseList() that returns either the filtered or normal
pose list and replaced the rather ugly "fFiltering ? ..." everywhere with it.
* Automatic whitespace cleanup.


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


# cc5b851813cb12b442550a3926a24e50592cc633 02-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

No need to lock out the normal typeahead when filtering doesn't apply (i.e. in
icon mode). And a little automatic whitespace cleanup.


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


# b3e4ce5422563f8d157a779811c19a452ba102c4 31-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Use the multibyte aware string functions for typeahead search and filtering so
that special characters can be used as well (umlauts for example).


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


# 7acdd03f5e076538220932aa6df4e929bd15ff7c 31-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Replaced the sMatchString buffer used for typeahead search by a BString. No
intended functional change.


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


# ef9c0b6a518a4b57ca9b02a6c59a0a984157aeff 31-Jan-2010 Rene Gollent <anevilyak@gmail.com>

More cleanups:
- remove some more leftover desktop integration-related code.
- remove special case that would hide the Desktop folder in file panels.
- fixed BFilePanel to correctly filter out the trash from the volume root
and show it on the desktop like everywhere else.
- renamed CountView::Add/RemoveFilter so they don't hide
BHandler::Add/RemoveFilter (gcc4 warning).



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


# 83c03b5698af79184e0ddf138bd42aa8819bf1d8 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Missed the re-insertion when exiting early after checking the sort order for a
pose on a non-visible pose list which would cause poses to get lost from the
unfiltered list.


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


# 6a5cf0a1f25a83e6f20a5f73ca8874675562cab2 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Allow shift-return to discard the filter so you can decided whether or not the
filter shall stay in effect when opening a selection.


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


# 29327709722945160ea85aaef35347389e4108c3 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Fix missing check that would cause non-matching poses to show up on attribute
changes (which may also happen on creation of new files).


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


# ac53da69c7e6d7a13aaf094e6722c77d13df1272 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

When initially starting filtering we need to make sure that non-matching poses
fall out of the selection. The same is later done when removing them from the
matching subset, so moved that to a common EnsurePoseUnselected().


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


# beb2e054210070370fa1070ee98719bad1344664 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

* Renamed CancelFiltering() to ClearFilter() to make it more clear what it does.
* Add UpdateAfterFilterChange() with the update part of FilterModified().
* Add StopFiltering() that clears the filter and updates.
* Make use of these functions where appropriate to fix missing scroll ranges
after canceling a filter.


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


# 545ebde00c3d50510a5236de1c5eef25ac21d757 30-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Implement type ahead filtering (this time for real and without abusing the
vertically sorted pose list). When enabled typing will filter based on the
currently visible attribute columns. Using shift-space as a delimiter
independent filtering strings can be typed, so you can filter based on multiple
attributes at once to refine results while you type. Filtering stays active
until you cancel it using the escape key. While the filtered result is displayed
all normal file operations can be used. Using the return key while filtering
auto-selects and opens the first filter result, allowing for fast traversal
through directories and directly opening the topmost result.

* Introduces fFilteredPoseList which stores the active filter result. The list
is only used when filtering is currently active, so no syncing is required
otherwise.
* Some minor adjustments to leave out invalidations where non-visible poses are
updated.
* Account for the now possible multiple lists throughout BPoseView.
* Add filter string output to the CountView and made that one a bit wider.
* Added all the settings-cruft for type ahead filtering (defaults to off).


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


# d9626569fb4d59f261c05cbe3a7d7e57e6bff9a5 17-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Model: Add accessor for Trash node property and cleanup spacing between inlines.
Rest: Use the IsTrash() accessor on Model where possible in place of the more expensive FSIsTrashDir() check.



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


# 7ca5e8873b6cec4e331ab0419d5221ec49105dbb 15-Jan-2010 Rene Gollent <anevilyak@gmail.com>

* PoseView: Re-enabled respecting the invisible pose attribute.
* FSUtils: Mark the root-level Trash directories as invisible. For the time being,
this renders the Trash only visible on the Desktop once more, pending
further consensus on how to handle it in the future. Note however that
this also means that Desktop and/or var directories that still have the
old _trk/pinfo_le attribute from prior to the previous visibility changes
will also be marked invisible again, and those people dual-booting older
BeOS will also still see this issue as the Tracker on those will still
force-write the invisible attribute onto those directories on every volume.



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


# a65ec1537642acc9b5fa1a3633f62ce30714b6df 15-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Fix style violations (thanks Axel!).
Update filesystem name in find_directory as our fat filesystem is not named "dos".



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


# 01dffd8edd94699ac1e6f2cc4322555f2171da14 14-Jan-2010 Rene Gollent <anevilyak@gmail.com>

More Tracker refactoring:
* relocated Trash dirs to volume roots by modifying find_directory() to report the trash location as volume/Trash.
* FSUtils no longer creates /home/Desktop on every volume.
* TrashWatcher now keeps icons in sync on all volumes.
* Simplified FSGetDeskDir since it no longer has to worry about getting the desk directory on any volume other than the root.
* Relocated trash context menu logic to BContainerWindow so it can also be used at the volume roots.
* DesktopPoseView now creates a virtual Trash pose representing the trash contents as before.
* Corrected typo: Model::WriteAttrKillForegin() -> Model::WriteAttrKillForeign().

Closes ticket #5245.



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


# c126f2f2c47cdb04ea70eb1dc63c3de7de651e77 13-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

anevilyak:
* Fix missing parenthesis in r35040 that caused node monitoring not to work.
* Minor automatic whitespace cleanup.


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


# 82d8aaf85a8c1ad19f69637468102ca08040facf 12-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Changed strings to sentence case. The changes in StatusWindow and
FSUtils are missing because I have some unfinished work in progress
in those files. Will commit them separately. This is case-tracker.diff
from #5169.


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


# 671dd808619ef6043eca11b09a193d877181d10f 12-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Various cleanups:
* Removed dead/obsolete Integrate Non-boot Desktops code.
* Modified PoseView to ignore the fInvisible attribute of BPoseInfo for now.
This has the net effect that the Desktop folder and /boot/var are no longer
hidden from the user. To go with this change, Tracker no longer forcibly
writes that hidden setting to those folders on access. This feature might
be useful again in the future (especially in conjunction with relocating
the Trash folder somewhere such as the disk root), but is currently somewhat
problematic because those dual-booting with BeOS will still have a Tracker
that force writes those attributes which would bring us back to square one
with respect to showing the Desktop folder when we start respecting the
attribute again. Suggestions welcome. Haiku-only users can remove the
_trk/pinfo_le attribute on those folders to remove the invisibility
in any case.
* TrackerSettings: Removed obsolete desktop integration settings. Also
modified TrackerSettings parser to skip unrecognized settings instead
of aborting the settings file parsing process entirely.

Closes ticket #2872.



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


# d3b113282ac7a8412b61ada23aff12b2acd334fe 27-Oct-2009 Rene Gollent <anevilyak@gmail.com>

Move CheckDevicesEqual into FSUtils so it can be used in more places.
Rework ContainerWindow's B_REFS_RECEIVED to use CheckDevicesEqual to decide move vs copy as is done elsewhere.

Fixes ticket #4850.



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


# e2ee5e5706e9e3285b6ffc337439fd2e06d4f7cd 26-Oct-2009 Alexandre Deckner <alex@zappotek.com>

* My previous fix to #4130 wasn't correct since it could miss some moved or
renamed files. After more investigation i found out that the problem was
caused by a non usual use of the zombie list in r31307. In the conditions
to reproduce #4130 it would call AttrChanged() or StatChanged() on zombie
poses which by convention should always be invalid models, ie: null node.
The logic would potentially create other problems too as it wasn't only
adding refFiltered models to the zombies.
I reverted part of r31307, clarified the logic and updated the comments.
I'd prefer another implementation for this as reusing the zombie list
here is only calling for future mysterious problems. #4131, #4271, #4610
and #4831 are still closed, but i'm reopening #1717 which is more of an
enhancement btw.



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


# c3ce629473721435c71ade4339b6c2099a2fbd2a 23-Oct-2009 Alexandre Deckner <alex@zappotek.com>

* When a file was created, then deleted shortly after, on a PoseView that is
busy processing other things, the file could be gone by the time we processed
the fs notification message of the entry creation. This case wasn't handled
properly and would cause #4130 and most certainly duplicate #4831, #4610 and
also possibly #4271.


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


# 725ad924ff644eee9794a0da605730415b562da1 20-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* When checking a draw/updateRect intersection, an offset was added too early
making the check fail when Pose::Draw was called with a non zero offset.
Fixes #4289
* Fixed an x/y typo (that had no really visible effect, the fade effect might
need some more indepth review)
* Removed dead code, and replaced an inlined intersection check with
BRect::Intersect.



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


# 105f1c632ec2b0056a65282fe6afed5be53c040a 19-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Added a TODO about droping icons under replicants or deskbar since i
couldn't find a quick solution that wouldn't need the layouting rewrite
(currently in redesign phase in my branch)
* In the mean time i've added desktop element avoidance in Cleanup so one
can easily recover hidden icons without advanced shortcuts. Before that, it
would need a CleanupAll aka shift-alt-k (which would relayout everything btw).

Doesn't fix #4241 but at least provides a way to see your icons again easily.



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


# bdee02b5b0e97899e39336ceceae8d11b4eecb2c 19-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Move cursors to Cursors.h
* Use the new copy cursor


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


# 3074019e96b6ba1b47cb5c6b032b35e5092da7f4 18-Aug-2009 Alexandre Deckner <alex@zappotek.com>

* Remove wrong check that was preventing to properly place the first pose. Fixes #4055


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


# 2d6de22fb5aaadc47f5d18ee78b2dfa2f8f98dc0 08-Aug-2009 Rene Gollent <anevilyak@gmail.com>

An Open With window has no target model. PoseView's drop target handling code didn't take this into account, causing a crash. Fixes ticket #4200.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32209 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


# 254d2b2d1ac2bdece0384dad26ca4e0c2b793b15 28-Jun-2009 Rene Gollent <anevilyak@gmail.com>

Fix a number of problems in PoseView:

1) If a node was filtered out by the ref filter, PoseView effectively wiped out all evidence that it ever knew the node existed and stopped listening for changes on it. Consequently, it would never notice if an attribute change such as updating the file's type made the file now eligible to be viewed. Now we keep watching the node and keep it on the zombie list until such time as it passes the filter (if ever).
2) Refresh() cleared the pose list, but not the inserted nodes list. Consequently, any nodes that were already visible before calling Refresh() would not be readded.

This fixes various problems seen in the file panels in WonderBrush (and probably others), such as the file panel initially coming up empty sometimes, and also it not noticing new screenshots,

This closes ticket #1717.



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


# bcfe344c537cb0dcee183c5a9afb4c362f5abe86 22-May-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made our struct stat POSIX compliant again -- the time_t fields have been
replaced by timespec fields. Via macros the structure is still source
compatible with the old one.
* Introduced header <compat/sys/stat.h> that defines the old stat structure
(as stat_beos) and conversion functions
* Introduced versions for [l,f]stat().
* Added symbol versions for BDirectory::GetStatFor() for sake of binary
compatibility.
* BStatable::GetStat(): Renamed the old method, changed its parameter to
stat_beos*, and and made it private. Added a new version (using up a
reserved vtable slot). It remains source and binary compatible.
* BRefFilter::Filter(): Changed the struct stat* parameter to struct stat_beos*
for sake of binary compatibility. This breaks source compatibility, though,
which we can't help, since the class doesn't have reserved vtable slots.
* Fixed several issues with the stat structure change, mostly adjusted uses of
BRefFilter.


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


# 4024eadfda1e2a3af49e7ec1549dee0d237dac10 10-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

My previous fixes had an oversight and the very last fix introduced new drawing
problems. Basically, forceDraw was set to false which then prevented any new
items to be drawn when there was no scrolling necessary. Now we use a local
variable "needToDraw" that starts with "true" on each iteration. I don't really
know why forceDraw is even passed to the function in the first place. Maybe
it should be called "disabledDrawing" with reversed meaning and should be used
for windows that open on another workspace....


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


# 039878c152b6a5f699950122cc4320746bc740aa 09-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Set forceDraw to false when we have already drawn the pose, not when
there is only some pending scrolling.
* Fixed my previous ScrollTo() change to actually scroll in the two directions
in two steps...


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


# 72cd1c77266abc6223f558773cf8e11a9bb04b40 09-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed some weird fallback code, I don't think it's used and added a TODO
for whoever stumbles there next...


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


# 6a71afb0d1c29bfa1fcc45e0d6aa191e2f09e028 08-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Sorry for mixing some cleanups into this patch...
* When changing icon sizes, invalidate before scrolling. This causes silent
scrolling in app_server and avoids a visual jerk. Everything needs to be
re-drawn at the new icon size anyways.
* Removed the fUpdateRegion member from BPoseView. It was supposed to make
drawing quicker, but it only made it slower. Checking for intersection with
the update rect passed to Draw() should be much more straight forward and
does not involve app_server communication...
* Refactored some misnamed methods, ScrollIntoView() would always draw and
only sometimes scroll - I couldn't agree with that.
* There is a very confusing mix of "fullDraw" and "minimalRect" booleans which
seem to be used with wrong semantics. The minimalRect flag passed to BPose::
CalcRect() means to get the pose rect for the icon and the first column only,
not all columns. Contrary to that, some pose rect calculation happens with
minimalRect == fullDraw... I tried to fix some of that.
* The visible changes of this patch are when adding poses. The
SynchronousUpate() wasn't working so well, I made it work reliably by invoking
Invalidate() and Window()->UpdateIfNeeded(), which also takes care of any
drawing that the app_server has to do for the background. And it's flicker
free in double buffered mode...
-> This fixes poses being drawn multiple times and the text getting darker.
* And there was another bug when adding poses. The extent (bottom of last item
in list view for example) can be just above the current view bounds. When the
next item is added above the view bounds, then the extent scrolls into view,
but there is nothing to be scrolled in this case. srcRect is still invalid
and so is dstRect. But destRect should be valid in this case.
-> This fixes some poses being cut off at the bottom when opening Tracker
windows.


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


# 7dc5caf242c997ae276db247e235f0a044500718 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

When changing icon size, pose locations need saving. That's not so nice, but
pose locations are always in view coordinates from the perspective of BPoseView,
even if the unscaled location wouldn't change from the perspective of BPose.
This could be removed when storing and restoring unscaled location. I was just
not sure were all this happens.


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


# 96da4b41b0baadab6c3f9b2fcdfe6573df564d4c 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Fix the completely broken desktop icon size changing which I introduced
yesterday. It needs to auto-place icons which go out of view or underneath
the deskbar or a replicant. Also it obviously cannot scroll to keep the
view "centered" as normal Tracker windows.
* Fix/improve the desktop context menu with regards to icon size options. It
also displays the shortcuts, which now work on the desktop too.
* When doing an icon cleanup on the desktop, not only the deskbar is avoided,
but also replicant views.


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


# e419aeed10332ea3cd9cbe63a896b9b5a0798da0 06-Apr-2009 Rene Gollent <anevilyak@gmail.com>

If drag and drop with the context menu is used (right click drag / control + drag), treat "Copy Here" as a request to duplicate the item if the destination is the same folder.



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


# 7cdbeb0e13344e4ac5d504c1bdec50e668bbe000 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Changing the icon size will now work more like simply scaling/zooming the
view. BPose converts the scale in SetLocation() and Location(), which does
_not_ affect performance for list mode, BTW. So that should be fine.
* The center of the pose view is now locked when changing the icon size.


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


# e70b6d957a03fbd24b6c47ad2668d23c11806912 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Cleanup in the icon mode stuff. kScaleIconMode is gone. There is simply
kIconMode and it can have different sizes.
* The "Icon Mode" super menu item is marked, when in icon mode, as well as
the size item in it's sub menu.
* When switching from mini icon mode or list mode back into icon mode, the
previous icon size is now restored. This also works when the folder has
been closed meanwhile. (The on-disk format for view state has changed, so
your folders will open with default values.)


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


# f5bdd554752b04626faf5dcdc1f01662e69d4bd1 06-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by Maxime Simon with small changes by myself: Change the icon size
menu as discussed in ticket #2431. There are only three main shortcuts for
icon, mini icon and list mode. Additional short cuts have been added to
increase and decrease the icon size. I've moved the shortcut from the 32
icon size to the menu item for the icon size menu itself. Unfortunately,
icon placement does not scale with the size (as before) and switching to
icon mode from one of the other modes does not restore the previous icon
size. Looking into it.


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


# 019f90e6348a15e47ef361c79970c4222e569b2d 05-Apr-2009 Jonas Sundström <jonas@kirilla.com>

Setting the escape key as shortcut for the Cancel options of Tracker's dialogs.

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


# 561b5d977bda7507edfe3240ad4b9a3d5a5cc777 05-Apr-2009 Alexandre Deckner <alex@zappotek.com>

* Implements enhancement #2829, ie: change the modifier key (now shift) to force identify on
already identified files and change the menu item label accordingly so that the 'feature' is
not hidden anymore.
The identification mechanism will probably be automated in the future, forcing
identification would then become the only use of this menu item.


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


# 0834dd807f88b3228ea6eb54745a5f9a194f507c 28-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Use B_DRAW_ON_CHILDREN for the Desktop pose view.
* Draw the selection rect in DrawAfterChildren().
* Call DrawAfterChildren() manually in Draw(), if B_DRAW_ON_CHILDREN is not set.

This change allows replicants, in case they want to be aware of being embedded
in the desktop, to use alpha blending to draw on top of the desktop pose view.
For replicants which do not care, this patch changes nothing. When views
with B_DRAW_ON_CHILDREN invalidate themselves, they will automatically trigger
an update of children that sit on top the invalidated area, at least with our
app_server. So this change works just like one would expect, ie like
compositing views. Of course it should have flickering when app_server does not
run in double buffered mode.


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


# f5812f4b023b85b83ab65e6a3e10b1ce339806d7 14-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

r28745 prevented overwriting the global type ahead string buffer from
an unrelated window. However, we broke unsetting the type ahead string on the
little info view. This fixes this again, the type ahead string never went
away.


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


# 1c56dee2c4a467e3f57d080e8282fe92b68af8d7 08-Mar-2009 Rene Gollent <anevilyak@gmail.com>

We need to remove the node from our list when the pose is removed. Otherwise deleting, then recreating the same file will be rejected as a duplicate and not added to the view. Thanks to mmlr for reporting.
Small cleanups.



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


# ccefc7ac9e001702cdec07984d4684691c64e501 06-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Clear the node list when switching directories. Otherwise navigating out of a directory and back in single window mode will show no nodes whatsoever.



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


# 38f4625170de89b624b903d273f73a658506fc82 06-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Rework this again due to flaws in the previous optimization - due to its use for things like sorting the visible pose list, it would rely on whatever pose column was being used for sorting, and as such would generate false positives when the view was being ordered by certain attributes. We now use an std::hash_set to track all the nodes that have been added to the current view and use that for a duplicate check instead. Also slightly boost the max number of models per chunk that we read.


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


# 847af0079c77e732f5cbed0e02dec2134f20d73d 03-Mar-2009 Rene Gollent <anevilyak@gmail.com>

Second attempt at PoseView population optimizations: We still search for the pose in our list, but now rely on a binary search to do it instead, rather than the previous linear search. This considerably boosts population speed for large folders here, while still preserving correct behavior.



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


# 634596058d034fc8bc3c47399ae5713b8e467da0 24-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Revert the changes in r29316 as it's now fixed upstream.


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


# ea83c971c62e9daecb350b848db048859bce9df3 24-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Round mouse coords before doing BRegion ops for the transparent
selection rect, as BRegion behaves unpredictably with non-integral
values (cf bebook).
Fixes #1527


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


# 3291c580449e9591a33c3ef846cec8b1d6c83385 21-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Revert the PoseView change from r29190. This is incorrect since the outline setting only applies to the desktop poseviews, and is explicitly set there by the backgrounds settings code in BackgroundImage.cpp. This fixes the font rendering artifacts reported in ticket #3467.


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


# ec8c04cc2c41a3796afe956d61856b91553aae2a 21-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Never show the copy cursor if the item being dragged is a volume or the disks icon. Fixes ticket #3468.



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


# 4712bc807c4d2d453a7d12548a6b4ce53aaf21a7 16-Feb-2009 Alexandre Deckner <alex@zappotek.com>

* Revert one the changes done in r29198 has it happen to be wrong. See #3450 and #3011


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


# 95da064570eefc4815a20f8e547f1fc58a7565fc 14-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Some pose performance improvements by aldeck and myself:
1) We don't need to call FindPose() on every pose as we're freshly adding it,
and a duplicate should never happen in this circumstance (the FindPose() is still there if
Tracker is compiled in debug mode however.
2) Adjust the FSClipboard calls such that the locking is optional. This allows us to lock
once per CreatePoses group rather than once per pose.

Together these changes make for a significant performance improvement when it comes to
populating a large folder.



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


# 71ed64b71b2d7654cbb087abd9060407b59bc1ca 13-Feb-2009 Jérôme Duval <korli@users.berlios.de>

* Icon label outline is by default true. We take this into account on PoseView creation in Tracker, and when no image is selected in Backgrounds.
* This flag is still only settable when an image is selected.



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


# c4d59015f605f2d074921613da1aa0ea18463724 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Slight logic cleanup that prevents excessively rechecking the drop target in some instances.



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


# a67852c554d5cc2744a3b87cbea3891a55f62ebd 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Reset the cursor check state if we drag over a pose that's not a suitable DnD destination for the drag. Otherwise we'll reset the cursor back to the move state and never set to copy again unless we exit/reenter the window. Thanks to luroh for reporting.


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


# 81796bc0b38a9a6567d560e7a4982329573fdd97 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Don't leak memory when aborting operations due to read-only volume.



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


# c854c1334828ad57a4695541aab92e868aba5bb5 08-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Disallow move to trash and/or delete operations from read-only volumes. This fixes ticket #3421.



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


# 42fe9293f8186edcf6bc688c2b779fbff2850189 07-Feb-2009 Rene Gollent <anevilyak@gmail.com>

Tracker now alters the cursor to indicate the resulting FS op when drag and dropping files.
If the op is determined to be a copy, the copy cursor from Wonderbrush (thanks Stephan!) is
displayed. Otherwise, the default hand cursor is used to indicate move.



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


# 28e82de7b38042b1f3c756f46c8eaaf679ee8ebd 31-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Compute the point list for the destination items. This fixes a problem reported by BGA where dropped items in large icon mode weren't being dropped onto the location of the pointer, but rather the first available grid slot.



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


# b8d65a49d8597913b05b022a19e638509c941aa7 30-Jan-2009 Rene Gollent <anevilyak@gmail.com>

This should really fix #3393. Apparently I'm more sleep-deprived than I thought.



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


# fee5fc34ff4c4c16f7fc85433ff8a807116fce50 30-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Fix another regression preventing moving around icons. Fixes ticket #3393.



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


# 994541a836bf1e8e64bd7ab3b516e2c7c917dd92 29-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Refactor MoveSelectionTo a bit to reuse other code instead of duplicating most of it practically verbatim with different variable names.



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


# 12f46bebca279adbb8b376e51f3b77b4545612b4 29-Jan-2009 Rene Gollent <anevilyak@gmail.com>

Fix a regression introduced with my previous commit where forcing Move would not always be respected.



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


# cfd0c07711e88655f4366f7a975c2568ce753156 28-Jan-2009 Rene Gollent <anevilyak@gmail.com>

If the source and destination volumes of a drag and drop op do not match, default to copying unless the user has explicitly requested otherwise. TODO: visual indicator of which op is going to happen.

--

M PoseView.cpp


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


# e5a30119a05e245ff948c32c6a53e1ee4a1411f9 12-Jan-2009 Alexandre Deckner <alex@zappotek.com>

* There was a bug in the way the mimetypes list was constructed, it would recalculate the list on
each addition, which is o(n). It's already refreshed lazily on read, only rarely when ContainerWindow updates
his menu.
Now there's only one recalc when finished adding poses, 9ms for 20K files here.
Pose adding is almost linear now for the first thousand files, but it gets worse after that due to
another known problem. Now doing 35s instead of 80s on a 20K files folder here, more to come :)


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


# b47e7347421eeada6d00ed4a37e42f4a08652a17 11-Jan-2009 Karsten Heimrich <host.haiku@gmx.de>

* Prevent a column to shrink smaller then the default column width. This was most notable
when double clicking e.g. the Size column in a tracker window containing only folders.
It would shrink smaller then one can resize it while dragging the resize 'handle'.



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


# 51505cb08a3d58fe8505737689cb78ffea14420c 10-Jan-2009 Alexandre Deckner <alex@zappotek.com>

* The pose adding thread was going too fast, opening too many files (those are closed by the window thread), and
reaching the file descriptor limit. For some still unknown reason, this was causing GetNextDirents to stop returning new
entries. The result was that, on populated folders, Tracker wouldn't load all poses and stop at a random amount.
We now take a more conservative approach and close the files before sending, reopening them on reception.

Now the AddPoses thread is a bit too aggressive, especially on second runs, i needed to add some snoozing otherwise it
would stall Tracker for several seconds. (testing on a 20000 files folder).
This fixes #3054



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


# db5b0bfcfe71c62f88646f0fd28b727fa96a0924 27-Dec-2008 Rene Gollent <anevilyak@gmail.com>

When drag and dropping a text file, Tracker would refuse to extract the text (and style attributes, if any) if the file in question didn't have both the text/plain filetype *and* Tracker's clipping attribute. Since I was unable to find any good reason whatsoever to check for the latter, I removed this. Fixes the reported problems where drag and dropping a file onto a BTextView would do nothing unless the clipping attribute existed as well.



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


# d35d0f74a62f9a3121d3e77eacb9c3276f02076d 28-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* s/fLastKeyTime is no longer a static member - this fixes that the type-ahead
buffer will be taken over to another window (if you type fast enough).
* Also the type-ahead runner no longer clobbers the static type-ahead buffer,
so it won't delete something you typed in another window anymore (again, if
you type fast enough :-)).


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


# b545073f089282445eaf00a96e2b8f4699079c84 06-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Moved the global BPrivate::WidthBuffer from BTextView into BPrivate as
gWidthBuffer.
* Tracker PoseView now uses BPrivate::gWidthBuffer instead of it's own
instance.
* TextView.h and PoseView.h are now a little cleaner.
* InterfaceDefs.cpp now deletes gWidthBuffer in _fini_interface_kit_().
* Added binary compatibility support for NetPositive in WidthBuffer.h and .cpp.
Obviously it kind of defeats the purpose of having WidthBuffer neatly tucked
away in the BPrivate namespace, but Haiku should run NetPositive, I guess.
Fixes #2879.


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


# e9842421554da064c665301a10b6a6b3f69ac818 31-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* On date format change, remove the need for the synchronous call to
DrawViewCommon(), simply invalidate since the logic is simplified now,
see below.
* Reworked the way TimeAttributeText was updated when date format is
changed. Got rid of the recalculatText flag propagation, it was broken
since forever anyway (was here on r5 max4.1): It was only updating
visible poses and wasn't robust in certain cases. Besides, it was
cluttering the code on several layers upfront only for date format changes.


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


# cde552bdcb6affbb553e55ac219079afc2a44174 18-Oct-2008 Michael Lotz <mmlr@mlotz.ch>

Don't select anything in type ahead mode when no match is found anymore. This
makes sure that the best match just stays selected instead of always selecting
the topmost pose.

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


# 842cd2b8cc3abd3fbff247ea69479431e1fd57f8 18-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* Removed the call to Refresh() when switching to scaled icon mode as it
would scroll to (0, 0), and screw the now always-in-sync fViewState.
After testing every possible mode transition, there seem to be no side
effect as the comment would suggest. Stippi, do you remember why it
was necessary? See r18699.
* This enabled me to do my previously added TODO's.


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


# 3704f31d736eec388bb78ddfa4e7983223d987d5 17-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* AddPosesCompleted could be called actually before all the poses were added.
The method was called after _sending_ all the messages, not after receiving
them all. This fixes the scroll validity check in AddPosesCompleted in list
mode (bug mentioned in my last commit).

We can now close #2441, tracker windows should now be completely persistant
with regard to scrolling now, in all modes (spatial mode, single window
mode in list or icon mode). \o/


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


# 3d7584da5c52a15f7219fd8527a5dd08353d45a3 16-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* Rewrote the way BViewState checks if changes needs to be saved on quiting a navigation window (icon mode and
list mode) or switching dir in single window navigation. Fixes the other half of the problem in #2441. Left some
todos.
I discovered an other bug that can add a random offset after finishing adding poses.


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


# 49ad25b3922a6354639b9fe6325c7c6aa1895e41 16-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The type ahead mechanism did not work correctly in list view mode: instead
of taking the contents of the columns, it would always use the file name
instead.
* That uncovered another bug, though: WidgetText::Text() tried to cast everything
to StringAttributeText, but GenericAttributeText is actually used for most
columns.
* Therefore, GenericAttributeText is now a subclass from StringAttributeText.
* Extended the type ahead to take other columns into account, and made it also
find strings in the middle (like a filter) as a second choice.
* Whitespace cleanup.


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


# e522ba55ba2916ebb0a69ca3fc19b893481919ab 15-Oct-2008 Alexandre Deckner <alex@zappotek.com>

* In single window navigation, tracker wasn't restoring the view origin (current scrolling) properly. It was reseting the origin even after
successfully loading the saved state. Reworked the logic to make that work properly (this also needed checking if the state read succeeded). This
fixes part of #2441. There is still an issue when sometimes the view state is not saved properly, more tomorrow!


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


# 2e2f53f614e36b0e3918f5da188b51e9f0be5b0d 25-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

don't leak extendedPoseInfo on error. CID 997

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


# 90b7764dc354ff1bcb01abf78dafe16faa820725 21-Sep-2008 Rene Gollent <anevilyak@gmail.com>

Move WidthBuffer and TextGapBuffer into BPrivate and use them from there in BPoseView and BTextView. This (correctly) fixes the previous gcc4 build issues.



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


# a682d9819fae1e26cef1390bb33b5d5c73304642 20-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Quite a cleanup action to avoid polluting the global namespace with private
BTextView classes:

* Declared the directly used BTextView helper classes as private BTextView
classes and changed all affected files.
* Realized that Tracker's BPoseView was (accidentally?) using what used to
be _BWidthBuffer_. It had declared it's own class with the same name and
same members/size in headers/private/tracker/TextViewSupport.h, but the
implementation was nowhere to be found. I can only explain this that
the BTextView implementation was then actually linked and used. But the big
problem was that it was used without locking (unlike in BTextView)! When
many Tracker windows opened during system startup or later and they happened
to each request characters not yet in the cache, I imagine things could have
gone bad and corrupted memory. Anyways, since I can see the usefulness of
the cache, BPoseView uses BTextView::WidthBuffer on purpose now. And I moved
the locking inside BTextView::WidthBuffer::StringWidth().
* Adjusted InterfaceDefs.cpp accordingly.
* TODO: Move subsequent classes into BTextView namespace as well, ie derived
classes that BTextView doesn't directly know about. All stuff in src/kits/
inteface/textview_support/
* Added preliminary and not yet implemented layout friendly BTextView
constructors.
* I will try to handle the insets imposed by BTextView::fTextRect a bit
differently when used inside the new layout management framework. For this,
I added BTextView::SetInsets() and GetInsets(). SetInsets() doesn't do
anything yet.

So far, everything seems to work still... ;-)


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


# c56a21ed62c1b66d71ef344e9646143a7a7cfb4d 19-Aug-2008 Alexandre Deckner <alex@zappotek.com>

- Made multi-selection modifier semantics consistent with most OS's out there. See #1255,
please shout if you've got anything against that :)


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


# 8a588970c7bb7c66ce4470fdccc7144e2557931a 25-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- HiliteDropTarget was broken, it used a trick to avoid unselecting already selected items but assumed every
call to HiliteDropTarget(true) and HiliteDropTarget(false) would come in pair on the same target.

Fixes #2453 and #1793


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


# 96f8dfaec86ecacfb8d8afc37efc119315bb76f7 24-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Some view mode transitions had to be handled specially: kScaleIconMode -> kScaleIconMode,
kMiniIconMode -> kScaleIconMode, kIconMode -> kScaleIconMode.

Switching the mode to kScaleIconMode uses a special code path that resets the view origin,
which wouldn't get a chance to be stored/restored. Other icon mode don't need to save/restore
their origin except when going to or coming from kListMode.

This fixes #2441, although i just discovered the same problem when using SwitchDir() (single
window navigation)


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


# 491a3293301e246a5448ad3e53d701a4b6cbc4b6 12-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- AddPoses didn't check for the ShowDiskIcon() option when deciding to AddRootPoses.

When changing to icon mode with a size other than 32 (ie: kScaleIconMode) PoseView calls Refresh() and all the poses are
removed and loaded again (PoseView.cpp line 1995). This called AddPoses but didn't check for ShowDiskIcon(). The Disks icon
was shown on startup though, since Tracker uses another code path when starting (caching?).

This fixes #1833.


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


# ed27e7aef638ce07edf7ff5faf32f76ae8dd2ede 09-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Scrollbar proportions computation was wrong in icon mode. The problem showed when a folder contained few icons regrouped in a small area (Extent() smaller than Bounds()). The viewable extent is
always Bounds() now.

This fixes #361, again we're better than R5! Although in this test case, the scrollbars shouldn't be activated in the first place. In icon mode the poseview is still putting too much white space on
the left (x<0) and make the scrollbars show. Fix is almost ready :-)


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


# 9abdb2222c2c07688e6bd6ec3c281461a7e9d914 30-May-2008 Axel Dörfler <axeld@pinc-software.de>

* PoseView waited for 200 ms after a B_META_MIME_CHANGED message was evaluated
to give other windows the opportunity to mark the icon invalid before
recaching it.
* Since we currently update all app MIME types on first boot, over 400 messages
are generated, so that delay easily caused the message queue to get full.
* I've now reduced the wait to 10 ms, and also call BWindow::UpdateIfNeeded()
afterwards, which empties the message port, too. This fixes bug #2212.
* Note though, this should be handled completely different to make it really
work right.


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


# 873066a8e11a974c12c7ab4cbb3f46c3e95d489f 30-May-2008 Axel Dörfler <axeld@pinc-software.de>

A bit of cleanup.


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


# 351b7a2d2499a7c9929452009158a92ba9d66091 25-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Added B_WATCH_INTERIM_STAT, and B_STAT_INTERIM_UPDATE definitions to
NodeMonitor.h.
* The latter will be set in "statFields" for interim updates when you have
asked to get them via the former.
* BFS now uses the B_STAT_INTERIM_UPDATE flag for sending updates to actively
written files.
* This makes us more compatible with BeOS again; if you only asked for
B_WATCH_STAT, you will now only receive a notification if the file in
question has been closed.
* Tracker now uses B_WATCH_INTERIM_STAT to always get all updates (ie.
downloading a file will update its size and modification time in Tracker
periodically during the download).
* Wether "needsTrimming" was true or not has no influence on wether or not
the size index needs to be updated in BFS - only the actual file size is
stored there, not the on-disk size.
* Added a TODO comment in Inode::WriteAt() that it would actually need to
update the size index when changing the file size, not when the file has
been closed (but that's probably too slow).


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


# 7b95b37ca2b9656bff46d0137d632ad2e4a9a943 05-Feb-2008 Stephan Aßmus <superstippi@gmx.de>

Make the Desktop window check the Deskbar frame only every half a second,
use a cached value otherwise. Should speed up icon placement when Tracker
starts.


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


# 46c6a221a883758d7100e7b3d64663725ee6d01d 11-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

Files that were created in the future (time zone issues, or whatever)
shouldn't be regarded recent either.


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


# f1b05aa545ee01a196b7f7df0ae719b50d1f312d 10-Jan-2008 Michael Lotz <mmlr@mlotz.ch>

Fix syntax error.

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


# 978e434d72cf713d3b14ea27d470dd9c556f57bb 10-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Finally nailed down and fixed #355: apparently, if the pose info attribute
couldn't be read from a file, Tracker would try 10 times with a 10 ms
timeout - but only if the creation time equals the modification time!
That was obviously supposed to be a check if the file was recent...
Now that computers are faster (even when running Haiku), it may
actually take less than one second to copy a file, so most files on
the Haiku image satisfied this thoughtful and future-proof check.
(And no, even the original BFS does not automatically increase the
modified time on close.)
* Now, mmlr came up with a better check: we just check the file's
creation time against the current time to see if it's a recent file.
That should work a bit more reliable :-)


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


# 1de41c158d4aee02e639595539c3f29bf849e09f 06-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* fixed tracker single click selection.

If I may say so, I find this code extremely messy and in desperate need for
refactoring. The bad news is that selection flickers now - the columns which
don't need to be drawn at all. I printed some debugging info in
BTextWidget::Draw() and it appears that for a single selection state change,
at least four invokations of BTextWidget::Draw() will result. Sometimes many
more. Since the code calculated the dirty rects wrongly in many places, it
appears that this bug might not have shown before. Like I said, the code is
a mess and there is not a single place for invalidating poses, so I am not
surprised why tons of invalidations arrive. :-/ Maybe I should make myself
more familiar with Tracker... or revert my text outline patch. :-P


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


# 5c34aef797c60839b66395519c53b39291dc35c7 22-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

changed the meaning of the "icon view label background" Tracker setting:
* it is replaced by a "icon view label outline" feature that renders a black
or white outline around the text of a label under an icon. This can be used
for background images that have a lot of contrast and is visually more
pleasing (IMHO) than the text box in the workspace color (but the outline
could of course still be improved as well)
the outline or "false bold width" feature is a new BFont feature in Haiku
* Tracker appeared to have a disabled feature to install default background
images, I enabled this feature and rewrote it a bit to use our big logo
from the artwork folder, the placement is for 800x600, so not optimal for
larger desktops, but at least it is shown by default on new installations
or rather "fresh" images
* changed the way the dotted underline is rendered under links, accidentally,
this fixes the bug that it was not dotted at all since a while, which is
a bug in app_server or BView not tracking the need to update the drawing
pattern in certain situations (this bug needs to be fixed too of course)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22040 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


# eeb608e1c7a4655b1e15f3333b9b3f7ef5a83795 26-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* StringFromStream() did not work correctly for empty strings (messed up the stream
position).
* StringFromStream() called BString::LockBuffer() with "length", but touched "length + 1"
bytes.
* Prepared for the new "display as" FileTypes feature.
* The "DefaultQueryTemplate" folder now adds the MIME type of the folder to the
attribute menu for simplified editing (before, you had to move a file with a
matching file type into that folder to be able to add the attributes you likely
wanted to see).


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


# 687e327bace5d8abca3e75ce74a8f532fac5c151 19-Jun-2007 Michael Lotz <mmlr@mlotz.ch>

Reworked the handling of periodically updated poses (currently only ones with a volume space bar):

* Addad global list where poses that need periodic updates can be registered with a callback
* Use this mechanism for poses with a volume space bar
* Create only one BVolume when the BPose is created for a volume, instead of every time the free space is calculated
* On Pulse() the global list is used to update all of the registered periodic update poses
* As the poses know their volume, it is no longer necessary to use a BVolumeRoster to loop through each volume on each Pulse()
* Removed the now superfluous SendNotices() mechanism
* Removed corresponding watching / handling of these notices in BPoseView

The BPoseView did a linear search for each volume pose on each Pulse() before. What's more it did this once for each mounted volume as it did get one individual notice for each of them. To get these volumes a BVolumeRoster was used to loop through the volumes, but then the BPose did still create a new BVolume to actually calculate the free space! I'm surprised that it did not suck away more performance with this method...

Anyway, this should bring down BVolume construction and update overhead down to a minimum and hopefully fix ticket #1247.

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


# 77974ff1711ba286edac17cc9220b5f72ef9ddfa 06-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

some forgotten fVariable -> sVariable renaming


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


# 67fb7cd0ed2e0810937285af04f6934423f5d96a 28-Mar-2007 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


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


# f6a62205d33776f337b46737846a5ce7d0aae2dd 02-Feb-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

Fixed comment style. :)


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


# f70737c108ea9bf263fc1591ce24a71ebad86eac 01-Feb-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

Fixed (*crossing fingers* :) the probably most complicated deadlock in Haiku's history...Axel, am I exaggerating? :)
I've tested it and it seems to work. Could someone else please confirm that everything still works well?

Hmm, I'm still wondering why Axel took the time to suggest a possible solution to me instead of fixing it himself. There must be a catch. ;)


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


# 5f5d917ad1f9dc4eeafffe03aed29d88c111269b 24-Jan-2007 Ryan Leavengood <leavengood@gmail.com>

Your wish is my command: now only removable read-only volumes have their
desktops integrated in Tracker.


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


# ebe10933ddf72c2d9c9bed3d3a7715306e5b5460 14-Sep-2006 Stephan Aßmus <superstippi@gmx.de>

* when the group of dragged icons was a bit larger, the
bitmap was not completely transparent, but had a faint
shadow, I removed this, though it seemed to be on purpose,
I have no idea why... it looked like a bug


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


# 7fb6186f3cb93a14ea0f96a82bdfc3d18f3ad56e 29-Aug-2006 Stephan Aßmus <superstippi@gmx.de>

* integration of vector icons with the registrar and the mime data base
* additional versions of SetIcon[ForType] and GetIcon[ForType] in BMimeType
and BAppFileInfo, which handle flat vector icon data
* changes in Tracker to support scalable icons (currently broken for
non-vector icons and needs cleanup) and drawing icons correctly with alpha
channel (large parts of this work done by Michael Lotz)

If someone feels like looking over the changes, that would be much
appreciated! :-)


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


# f8262c2b196093faee0c9b9268cbe5a3a14bf5f1 27-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

sync to rev 1.62 from OT rep: use the event time instead of the current system time for appending or starting a new match when typing ahead to select a pose

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


# 269d3bd5bce1fa4d84ee2cf577a29af93dab3b7a 11-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Imported PoseView.cpp 1.61, OpenWithWindow.cpp 1.8, and OpenWithWindow.h 1.3
from OpenTracker CVS.
This fixes bug #354.


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


# 7befa79ace38aeecb9ceb86e7244c6d6747fd888 01-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Imported SettingsViews.cpp 1.10, FilePanelPriv.cpp 1.14, TrackerSettingsWindow.cpp 1.7,
SettingsViews.h 1.8, FSClipboard.cpp 1.12, PoseView.cpp 1.60,
TrackerSettingsWindow.h 1.2, TrackerSettings.cpp 1.11 from the OpenTracker repository.


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


# 693f381e833e2bc6021764ee0610af1b4c67b0ad 31-May-2006 Stephan Aßmus <superstippi@gmx.de>

Fixed a weird Tracker bug, fOkToMapIcons was initialized to "true", but
I have no idea what sense this makes. When switching from list mode to
icon mode, some poses had their locations set to location "infinity",
because MapToNewIconMode did a division by zero. This resulted in feeding
the scrollbars a totally insane range.


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


# f15ba3375110cb750e67972f1f7702f0f7e7163d 08-Jan-2006 Stephan Aßmus <superstippi@gmx.de>

synced with version 1.59 of the OpenTracker rep

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15877 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


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

More GCC 4 fixes by Ingo Weinhold - appeared because of the recent removal
of new/typeinfo/exception from our headers.
Rearranged the IconCache node_ref hash computation to be padding-resistant
(at least on PPC, node_ref is 16 bytes long, not 12 as it is with x86 and GCC 2).


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


# 4a71b881a912026bb1d59922b619c17edd72771b 14-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Final GCC 4 fixes by Ingo Weinhold (were not visible before, due to a missing -no-undefined).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14918 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