I've pushed the branch public here: https://github.com/jscipione/haiku/tree/spinner Most interesting files to look at for the class are in the usual locations (for private classes): https://github.com/jscipione/haiku/blob/spinner/src/kits/interface/Spinner.cpp https://github.com/jscipione/haiku/blob/spinner/headers/private/interface/Spinner.h This BSpinner current stores its value as a double... which means it works with numbers only, it could be modified to work with a string instead if you wanted to support things like months or suites but that doesn't seem like it has much of a point. Using -/+ instead of arrows seems like a decent idea to me.