usability redesign, though, so I didn't bother letting it use the layout
engine for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32022 a95241bf-73f2-0310-859d-f6bbb57e9c96
could return NULL. This fixes the crashing part of #4037.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31777 a95241bf-73f2-0310-859d-f6bbb57e9c96
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
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
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
nowhere, we still want to be able to automount them, even though the
notification is not for a device.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30720 a95241bf-73f2-0310-859d-f6bbb57e9c96
* During boot, the mount mode was ignored for any removable volumes, they
simply got mounted always.
* When automounting later, all partitions on all removable devices would
be mounted, not only the ones on the newly inserted device.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30719 a95241bf-73f2-0310-859d-f6bbb57e9c96
bypassed, same for invoking "Mount All". Now, the "initial scan" parameter
is used to decide if the user should be alarmed. Basically, it means you
get to decide for every mounted volume if you want it rather read-only.
In the old code:
- If you wanted a stick mounted read-only, you had to go to "Tracker Settings"
and disabled auto-ejecting, unmount the stick, then re-mount to get it to
ask you for read-only mounting.
- But then, it would remember this setting, so when you unplugged the stick
and then replugged it, it would mount it read-only again. This may be nice
for later, but for now, I want to decide if I am willing to take the risk
each time.
* The new code also has the implication that when you plug a drive with more
than one partition, you are being asked for each one. I extended the alert
to also mention the partition name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30716 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Extend the PaneSwitch BControl from Tracker, so it can draw on/off labels.
This has the added benefit that you can click the label to expand/collapse,
like for example in the Get Info window (Permissions).
* I also added font-sensitivity features to PaneSwitch, and it can be used
in layouted windows (untested).
* This made the "DrawButton" in the Installer superfluous.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30348 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added "Close All in Workspace" menu item in the Window menu. The shortcut
is 'Q', which is usually the Quit shortcut. Since Tracker prevents quitting
via this shortcut, overriding it like this is ok, this was also discussed
in the ticket #2833. I've tested that the existing functionality is not
disturbed (ie Quit in the Settings panel still works, as does quitting
Tracker via "hey Tracker quit"). I did not add the "Close All" menu item,
since that feature is already available via DeskBar and when pressing the
shift key before opening the Window menu.
* I did change the additional short cut. As with "Clean Up" versus "Cleanup Up
All", it's now consistently the shift key, which you have to press.
Note to Obaro: The only other change was that one can set the target of the
menu item to be "be_app", that way one avoids dispatching the message in the
window. Thanks a lot for your work, Obaro!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30205 a95241bf-73f2-0310-859d-f6bbb57e9c96
headers/private/shared is newer, though with small interface changes.
* Removed the unnecessary Debug.h include in
headers/private/shared/ObjectList.h.
* Adjusted sources using these headers, mostly by adding missing includes.
* Lots of automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30123 a95241bf-73f2-0310-859d-f6bbb57e9c96
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
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
the "system" folder and "system folder or it's contents" case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30057 a95241bf-73f2-0310-859d-f6bbb57e9c96
* 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
* The alert escape check was broken in several ways. First of all, the buttons
can be NULL which suddenly crashed apps. Second of all, the check didn't even
work as it was reversed.
* Also, I disabled the code for now, as I really don't think string comparison
heuristics are the way to solve this.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30018 a95241bf-73f2-0310-859d-f6bbb57e9c96
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
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
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
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
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
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