- Catching an exception in the normal flow is not a good thing, instead,
test before calling the function (I've been doing too much python
lately)
- Avoid using uninitialized nodeRef if there is no system root and also
no specified root in the message.
Thanks to Ingo or the code review.
We only compared the height, width, and depth of modes to decide if the
mode was already set. However, at boot, we may have these settings right
and other things not properly configured, preventing VESA to set a
working mode unless forced from the boot menu.
Fixes#12918
- Avoid use of fixed size buffer without checks, use BString.SetToFormat
instead.
- Use the same format for the initial setting of the values, so there
are less strings to translate, and locales using a different
representation for numbers get the right thing done as well.
- Fix initial label for the outline slider, which did not show the value
unlike others (problem spotted by Diver, thanks!)
* Truncate() would cut Unicode characters in the middle.
* This commit removes arbitrary message length limit as well as workaround
it was needed for and fixes#5289.
* Status view now expands to maximum possible width and cuts the status
message if necessary using TruncateString().
Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
* Minor whitespace fix.
The package kit needs to provide the package daemon with the node_ref of
the root directory, so the package daemon gives the correct results when
the request comes from inside a chroot.
Moreover, the package kit must be able to handle a root with a system
but no home package dir, as is the case inside the chroot environment
created by haikuporter.
Fixes#12602.
get_ref_for_path() doesn't resolve symlinks.
Construct a BEntry from the path passing 'true' for the traverse
argument. That BEntry is then be passed to BDirectory's constructor.
The error was hidden by the fact that the code didn't bother to error
check the result of get_ref_for_path(), which would have indicated that
the passed in path was a link.
Thanks Rene for your help.
if the entry fails to init, we are probably screwed, but, try to get
the path using get_ref_for_path in that case. Worst case scenario it
fails as well and the FilePanel points to your home directory.
In the case that the Keymap directory does not exist and has to
be created, reinitialize ref to the newly created directory.
Thanks Stippi for your help
There is still a bug present where if the Keymap directory is a
symlink to another directory, the File Panel does not follow that
link and instead opens to your home directory. More on this later.
...trying to get/make Keymaps settings dir if not able to create
the Keymaps directory under settings.
Resolve symlink, if it is a directory, use that directory instead,
otherwise use home directory as a fallback.
Create a ColorWhichListView class which impliments InitiateDrag()
to drag a color square out of the list view. You can then drop the
color anywhere that accepts a color drop. This allows you to drag
and drop colors between list items for example.
BeOS had a feature where you could click on a list and while holding
down the mouse button scroll through the list items selecting them
as you went. I implemented the same feature on Haiku.
Did the work in separate thread which makes sure that the mouse
is held down the whole time even if you leave the view.
Thanks Diver for bringing this feature to my attention.
* Rename kDoubleClickTresh to kDoubleClickThreshold
and use floating point in rval
* Pointer (*) goes with type for property var
* Use {}'s for multi-line if conditional
* rename point to where (consistent with header and rest of IK)
* Explicitly compare with 0 for bitwise operator statements
* Rename InitiateDrag() params
Instead of filling out the path into a BString and using it in the calling method,
call _SetKeyboardLayout() directly using the path found.
Also use a plain const char* array instead of BString because we don't need
the added functionality.
The return value now reflects whether or not the window frame was loaded.
Check the return value on the caller side and only use the resulting window
frame if it is B_OK, otherwise CenterOnScreen().
The function would stop prematurely after the first submenu whether it
found a layout or not.
Now stop when you have has an initialized path or end of menu
Fixing saving keyboard layout also fixes loading layout which fixes#3918
How did this silly bug live so long?
Install this font to see all those icons WebPositive currently
fails to display e.g. at the discussion forum at
https://discuss.haiku-os.org
Thanks PulkoMandy for pointing this out!
TimeTracker lets you create tasks for your various projects and
shows them in a list. Via double-click on an entry you start/stop the timer
on that task, thus helping you keep track of how much time you spend doing
what.
The #pragma weak does not work, the symbol is not defined and when
already defined, it is not made weak. Moreover, it does not make the
symbol global so we need to declare it with a FUNCTION.
If we want the symbol to be weak, then we should use .weak to do so. The
_longjmp symbol should also be changed to match, in that case.
Fixes#12912.
ThreadHandler:
- When single stepping, verify that current instruction pointer is
actually within a valid image. Otherwise we'll crash attempting to
retrieve debug information for it.
DwarfImageDebugInfo:
- While computing return value locations, we need to re-evaluate
the availability of debug information as we're forced to traverse
around images to resolve the location of a function call. Otherwise,
we may crash as one of the called functions may belong to an image
that wasn't compiled with debug info.
A few weeks back, I spotted in the Musl FAQ that they apparently ship
empty libm.a and libpthread.a files (https://www.musl-libc.org/faq.html),
which they said was for POSIX compatibility. A bit of digging got me to
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html which
says:
> It is unspecified whether the libraries libc.a, libl.a, libm.a, libpthread.a,
> librt.a, [OB] [Option Start] libtrace.a, [Option End] libxnet.a, or liby.a
> exist as regular files. The implementation may accept as -l option-arguments
> names of objects that do not exist as regular files.
So to follow the letter of the law, we only need to have the "c99" command
accept these; however, it appears all Linux and BSD cstdlibs accept them
no matter what compliance mode is in effect.
Discussed with PulkoMandy. This will make HaikuPorts' job a lot easier...
These are not perfect, but better than using the default app icon. Feel
free to improve.
- DNS resolver: phonebook icon
- App-server: hand + app icon
- Keystore: key lock
- Launch daemon: croissant (to get the day started)
- Net server: hand + earth
- Package daemon: hand + package
- Power daemon: CF lightbulb
- This is how it is named in other versions of elf.h (Linux, glibc, possibly more)
- ELF_MAGIC is used by libelf for the same thing, and the defines conflicts,
breaking libelf build on Haiku.
Similar to Linux netconsole, this should send all debug output over UDP
to the broadcast address. It can be listened to with netcat or similar tools.
This could be an easy way to extract KDL info from a crashing machine
when no serial ports are available.
Does not work yet, help welcome.
The boot still crashes some time later, but at least it is easier to
test now.
- PackageFS included in the net boot archive
- Tell the system it is booted "from image" when netbooting
This works around a KDL in the driver due to the buffer address passed
to write() being unmapped in the destructor, and the driver doesn't
properly checks those yet (BeOS used to lock_memory() on read/write buffers).
You can drag a color square from the color preview and drop it
anywhere that accepts a color drop.
This allows you to use the color drop feature more readily
for example to change the desktop background color or change the
color of Deskcalc.
Also did some refactoring of ColorPreview class. Make it a BControl
which eliminates the enabled bool and invoker which both are handled
by the inherited BControl class.
Did some refactoring.
* Renamed a couple of class variables following convention
* Also renamed a couple of method parameters for the same reason
Don't call Draw() directly, this is frowned upon, instead use
Invalidate() so app server can draw at the appropriate time.
* Did not use std::nothrow, but exceptions were not catched.
* MessageLooper::Run() now returns a status code.
* There are a lot more cases of a new without nothrow that need to
be investigated.