Tracker-Layout has landed!

Blog post by waddlesplash on Tue, 2015-01-27 22:00

This means that Tracker is no longer using the old B_FOLLOW_*-based system for resizing views, which makes for much cleaner code that's easier to read and understand. Alexandre Deckner initially did this in 2012, but due to refactors and other changes to Tracker since then, as well as some compatibility issues with his method, it wasn't possible to merge his code. After realizing this in mid-December, I started the work to move Tracker to layouts that was just merged today.

Moving Tracker to layouts is primarily an under-the-hood change that end-users shouldn't notice, but it means a lot for Tracker. The old system relied on various snippets of code spread across the various Tracker windows (the desktop, the main file browsing window, the "Open with..." window, the file panel...) to place all the views on the screen with the expected dimensions and positions. Some of these snippers were really hacks, such as modifying the resizing mode of some views every time the window was resized, child views rearranging siblings so that they all fit, and intercepting hide/show events for other views to keep the scrollbars in the right places. So as of hrev48734, all the windows and views in Tracker that display a file listing of any kind are moved over to the Layout Kit (with the exception of the file panel & the desktop, which can't be migrated to layouts without breaking BeOS compatibility. That's okay for now, though, as moving all the other windows to layouts allows simplifying these two a lot.) There are still some very minor spacing issues to be cleaned up, but nothing that's really noticeable unless you really look closely.

But moving Tracker to layouts did provide one big benefit: the navigation toolbar could be moved off of the old BeOS bitmap-icon-based toolbar onto the new vector-icon-based toolbar that ShowImage and WebPositive use:

beforeafter


Try out the improved Tracker, report any bugs you find, and let me know what you think in the comments!