8 Commits
Author SHA1 Message Date
Simon South a041f1b49c GLUT: Fix message handling in GlutWindow
Call the superclass implementation of MessageReceived() to process messages not
handled by GlutWindow itself.

This restores mouse and keyboard functionality in OpenGL apps, including
Celestia, affected by commit 75e5739772.

Change-Id: Ic3af56ab2f78e8b2b8be576d2edc30bb7357f359
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1862
Reviewed-by: waddlesplash <[email protected]>
2019-09-13 22:57:04 +00:00
Simon South 8840b3db9a Terminal: Allow use of Option as Meta key
Add a configuration setting that allows the left Option key to be used as a
Meta key, and add support for the Escape sequences that control the Meta key's
behaviour.

TermWindow now maintains a copy, shared by all its component TermViews, of the
current key map, and updates this copy automatically when notified by the Input
Server a new key map has been loaded.

The Meta key was an extra modifier key present on early UNIX workstations that
provided access to the "extended" portion of the ASCII character set. Although
it has vanished from modern keyboards certain UNIX software still relies on the
key, most notably GNU Emacs and the GNU readline library, the latter of which
is used by bash and a wide variety of other software that reads input from a
terminal. (Python's interactive mode uses readline, for instance.)

With this patch applied and the new setting enabled, the left Option key can be
used to access additional editing and navigation features at the command line.
It also makes usable the port of GNU Emacs currently available from HaikuDepot.

Fixes #15294.

Change-Id: I150b640b7b18384d56ab2fb017bf16ce8bdbdd78
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1727
Reviewed-by: waddlesplash <[email protected]>
2019-09-06 22:32:07 +00:00
Simon South 75e5739772 BWindow: Do not invoke BView handlers directly
When dispatching a message to a BView, pass the message on to the view's
MessageReceived() method rather than invoking one of its handlers (e.g.
KeyDown() or MouseDown()) directly.

This commit moves the existing handler-invoking logic from
BWindow::DispatchMessage() into BView::MessageReceived(), preserving the
existing functionality.

Fixes #15254.

Change-Id: I230c0781df13e54e08573a5a31d7550520c060d5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1723
Reviewed-by: Stephan Aßmus <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Ryan Leavengood <[email protected]>
2019-09-01 03:06:36 +00:00
Simon South b9d9c282fd input_server: Notify apps of new key map
Define a new message, B_KEY_MAP_LOADED, that is broadcast to applications by
the Input Server each time a key map is loaded. This allows apps that cache
key-map data to know when their copy has become stale.

Change InputServer::HandleGetSetKeyMap() so it returns an error in the event
loading even the system (fallback) key map fails.

Change-Id: Icc6c884f695ca59c687d83c680bb2fb467dd90cc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1741
Reviewed-by: waddlesplash <[email protected]>
2019-08-27 06:49:37 +00:00
Simon South a7536efa8b BKeymap: Add unit tests and fix issues
Add a preliminary set of unit tests for BKeymap and fix these issues:

* BKeymap::operator=() caused a crash by allocating a zero-byte array to hold
  the other object's character data.
* BKeymap::SetToCurrent() and SetToDefault() leaked memory by not freeing an
  existing character array before allocating a new one.
* BKeymap::SetToCurrent() incorrectly determined the size of the current
  keymap's character array, causing GetChars() to fail whenever the current
  keymap was loaded. Now SetToCurrent() uses the _get_key_map() private
  function, which accurately reports the size of the array.

This commit also updates a Jamfile by replacing a use of "UseHeaders" to
include private header files with the more concise and expressive
"UsePrivateHeaders".

Change-Id: If6f71b209f1bd395be57835c4dd89f0e3f845994
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1724
Reviewed-by: Ryan Leavengood <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: Stephan Aßmus <[email protected]>
2019-08-20 07:49:49 +00:00
Simon South 5f255c64dc DefaultBuildProfiles: Add OpenSSL to minimum profile
This makes pkgman functional in minimum-profile images.

Change-Id: I3578886743fecbf76779ac1b4b76762d8ce1be3d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1715
Reviewed-by: waddlesplash <[email protected]>
2019-08-13 19:38:23 +00:00
Simon South 6e5ca42d21 build: Make Debugger usable in minimum profiles
Add a missing dependency (libedit) that prevented Debugger from
starting, and include Debugger in the Applications menu in the Taskbar.

Change-Id: I43c69fe969e51a3a59d1f2d9aa65c00b20848b87
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1713
Reviewed-by: waddlesplash <[email protected]>
2019-08-13 03:28:11 +00:00
Simon South 9b72c3a089 kernel: Specify buffer size in certain ioctl calls.
In cases where scsi_periph checks the size of the buffer supplied to an
ioctl call (functionality added in commit ff4af513e1) this information
needs to be provided by the caller to avoid failure.

Fixes #15094.

Change-Id: I37f2776edbe977e9825ec1837fb763a3b2aa7220
Reviewed-on: https://review.haiku-os.org/c/1584
Reviewed-by: waddlesplash <[email protected]>
2019-07-12 02:19:00 +00:00