Commit Graph
100 Commits
Author SHA1 Message Date
Stephan Aßmus 860678c2c7 At some point, there was some hassle about what coordinate system the "where"
BPoint in a mouse moved message is. Turns out it's different (!) according
to the type of message and this is even documented in the BeBook. I don't
really know if we want to copy this, but since there are apps out there that
depend on this, I am implementing it so that it's compatible with BeOS: In
the B_MOUSE_UP/DOWN case, it's the coordinate space of the target view, in
B_MOUSE_MOVED messages, it's that of the window. That explains a few things...
Clicking into Pe's function popup window should now select the right icon.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-28 20:05:38 +00:00
Stephan Aßmus 9aed61212a The types messages when constructed from the list view contents may have a
different sorting order. Therefor store that message in the original data
info instead the types message retrieved from the node. This fixes the
FileType window from requesting a save operation on quit even if nothing
changed (probably with certain app infos only where the sorting happened to
be different. Was the case with Firefox for example). Fixes #XXXX (Trac is
broken again... sigh)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-22 18:31:16 +00:00
Stephan Aßmus 3e58fe9e70 patch by Clemens Zeidler:
* Support dragging the clock hour and minute hands to set the time.
* Improved keyboard support for the time and date controls.

Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-22 00:23:51 +00:00
Stephan Aßmus faff99c017 Use layout management for all of the window. Can be improved by making
the listview use all the available additional size. But works far better
than before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-21 00:17:59 +00:00
Stephan Aßmus 295f3d13dc Style update.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-21 00:15:22 +00:00
Stephan Aßmus 24a0a80b05 Properly integrate the BTabView into a layout tree. Ie, the content will
now resize with the tab view. There is probably a more elegant way overriding
DoLayout(), but this should do for the time being.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-21 00:14:05 +00:00
Stephan Aßmus e401039efa Patch by Artur Wyszynski:
* The BTabView can now be used with layout management. In this setup, children
  views are managed by a BCardLayout and are hidden/shown instead of removed/
  added when (de)activated.

Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28701 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-20 21:51:43 +00:00
Stephan Aßmus 5ebeee561a Turned off the Synaptics driver again, as it seems to give some people
problems still.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28700 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-20 13:00:06 +00:00
Stephan Aßmus 63d618eebc * Fixed wrong usage of Seek(). The return type is off_t, not status_t. It only
worked because (status_t)B_OK == (off_t)0.
* The translator_id version of Translate() does a (probably unnecessary?)
  Identify(), but then forgets to seek the source BPositionIO back to 0
  before calling translator's Translate(). This was the reason for none of
  the WonderBrush Translation Kit export formats to work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:52:22 +00:00
Stephan Aßmus 133c37e41e Embed "Haiku" instead of "OpenBeOS" in created images.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28675 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:42:47 +00:00
Stephan Aßmus 0147f45ad7 Simplified the code, style improvement (brackets for multi-line if/else).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:41:54 +00:00
Stephan Aßmus 4bae262f06 This should be the correct MIME type.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28673 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:40:43 +00:00
Stephan Aßmus 783d616d08 Minor style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28672 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:36:42 +00:00
Stephan Aßmus fa6cd8ad6a * The previous change to reorder item->Update() and _RecalcItemTops() obviously
broke everything. If the added item has no chance to calculate it's height,
  _RecalcItemTops() won't work of course. Whatever this was supposed to fix,
  there has to be a correct way.
* Override BView::SetFont() to update all the items. I remember wanting to
  implement this, that's why I refactored a _FontChanged() method, but I
  obviousy never did...
* Moved the AttachedToWindow() and FrameMoved() implementations to a more
  logical position in the file.
* Implement B_PAGE_UP/DOWN key presses. Don't know if that's what the BeOS
  implementation did, will check later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28671 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:34:11 +00:00
Stephan Aßmus 231cbd908e Actually restore the "dragger" settings. So the system remember your "Show
Replicants" setting after reboot.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28670 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:23:15 +00:00
Stephan Aßmus 6e094221e8 * Fixed the mouse movement when speed or acceleration where below default
values. The implementation needs to sum up fractional movement, not
  truncate to zero. Before this change, the mouse would be pretty much unusable
  at lower speeds/acceleration. Now it is guaranteed to move.
* No need to memset() before ioctl(), the driver does that anyways.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28669 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:21:34 +00:00
Stephan Aßmus 8d267d142a Fixed the "power" operator (^).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28668 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:15:13 +00:00
Stephan Aßmus 34ef8378c5 Fixed the problem that icon buttons are too small when creating new ones.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28667 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:14:10 +00:00
Stephan Aßmus f1d4302878 Small style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28666 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:13:21 +00:00
Stephan Aßmus cfb03bacfc There is a bug report about Home/End and Page Up/Down not working in the
DataTranslations list view. This should fix it. MessageReceived() was not
forwarding to the immediate inherited class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-16 22:12:29 +00:00
Stephan Aßmus 167f43a24c Merged touchpad input_server device into mouse. This gets rid of a lot of
code duplication and will make maintaining it much easier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-14 10:41:22 +00:00
Stephan Aßmus 5c197c7546 * Implemented setting the "click count" correctly in the Synaptics driver.
* I feel the Synaptics driver is now good enough to give it more exposure
  and turned it on again. If it gives you trouble for some reason, you can
  turn it off again in ps2_dev.c, line 105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28643 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-13 23:37:03 +00:00
Stephan Aßmus 9195fe6efe * Don't return B_OK from Start() if opening the device failed. Then Stop()
won't be called, the control thread will remove the device anyways.
* Turned off the debug output I left on accidentally in KeyboardInputDevice.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-13 22:14:40 +00:00
Stephan Aßmus b419343e89 Do not set fSent to true in SaveAsDraft() already, since it is correctly set
in Send(), which uses SaveAsDraft(). This fixes #1020. Thanks to kaoutsis and
ksmith for their investigation!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28641 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-13 20:07:32 +00:00
Stephan Aßmus e1f3108a60 Patch by Scott:
Make sure the comments are C style in headers that are included by POSIX
headers.

Thanks! Should fix #2870.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-10 23:50:42 +00:00
Stephan Aßmus cc44241143 Prepend the mouse name with "Extended " if the device path contains "intelli". This makes
sure that you can have an old style mouse without scroll wheel and one with attached at the
same time. For example, when I hot-plug my PS/2 mouse with wheel, the IBM trackpoint will
otherwise already use up the "PS/2 Mouse 1" name.

Unfortunately, hot-plugging the PS/2 mouse on my T60 docking station still does not work
quite right. The PS/2 driver detects everything correctly, the node monitoring works and I end
up with the correct device threads in the input_server. (The notebook is automatically removing
the touchpad and trackpoint devices in this event, which cannot be turned off in the BIOS.)
However, the mouse does not move. In the syslog, I see one message
"ps2: strange mouse data, x/y overflow, trying resync" after the the output from the add-on
manager in the input_server that it has added the new device. When I restart the input_server,
it works fine, even though the same devices are detected and polling threads are running.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-10 12:33:16 +00:00
Stephan Aßmus 5125eae25d * Cleanup and refactoring, made several Mouse-/Keyboard-/TouchpadDevice
functions private and moved them accordingly in the file.
* I forgot to initialize the BObjectList to own the items in
  TouchpadInputDevice.
* Changed the methods that read and apply settings in all three addons to be
  executed from the control threads only, which fixes race conditions.
* The success of opening a device is no longer checked in the Start() method
  of the *Devices. Instead, the control thread checks the device before it
  enters the polling loop and cleans up if there was an error. This fixes
  non-running devices in the input_server because the PS/2 driver publishes
  devices which is has not checked yet for other reasons. It is important,
  however, to open() the devices in the Start() hook and not the control
  thread, otherwise there are unwanted race conditions in case node monitoring
  events are received more than once for the same device. That's the case
  for some reason on one of my computers for the AT 0 keyboard.

TODO:
* Combine the Touchpad and Mouse device addon into one, it's almost the
  same code except the Touchpad knows more settings and one more control
  message.
* Refactor a common base class for Keyboard and Mouse device addon.
* Fix the mouse speed/acceleration. If the speed is lowered from the default
  in the preflet, the mouse becomes almost unusable. To fix this, the same
  trick should be used as I used in the touchpad kernel driver, which is to
  sum up previous mouse moved fractional offsets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-10 11:16:02 +00:00
Stephan Aßmus 59251feadc More realistic file size restriction. UINT32_MAX is not defined on some
target platforms, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28573 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-09 11:08:19 +00:00
Stephan Aßmus 9a3960e8de Ugh!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28572 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 23:07:16 +00:00
Stephan Aßmus 3781dcda89 * Copy the FreeType headers to the 3rdparty headers. (Tested with WonderBrush
source and it works fine.)
* Updated WonderBrush package. The new version is compiled on Haiku and
  improves the installation of the document mimetype (finally a more reliable
  sniffer rule, thanks to Francois for helping me with this). The About window
  is fixed to no longer use a hardcoded font file path. This version only runs
  on Haiku, but it is fully unlocked! Next version with new features won't be.
  Also comes with a new vector icon for the native document type.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 22:47:53 +00:00
Stephan Aßmus 52de6dce94 Moved the gradient_type and color_step structs into the BGradient
class/namespace. Renamed the B_GRADIENT_* types to TYPE_* as the context
is already given.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28564 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 14:56:56 +00:00
Stephan Aßmus 3bd8c2318f * Fixed a warning.
* fStyleMap could be deleted more than once in certain situations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 13:22:33 +00:00
Stephan Aßmus 3d198cd3ae Do no export unsupported accelerant hooks. Hopefully fixes #3088.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 13:15:02 +00:00
Stephan Aßmus c8d611a2c0 Prepend header guard with underscore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 12:00:57 +00:00
Stephan Aßmus b2411d9aeb System headers need to have "_" prepended in their header guards.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 11:58:54 +00:00
Stephan Aßmus c2288cbef1 * I fixed the Pe package and therefor bumped the version number to trigger
redownloading the package.
* Added link "vlc" to "VLC media player" in /boot/common/bin to make it
  easier on people launching VLC from the command line.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28558 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 11:02:14 +00:00
Stephan Aßmus 8b62d2f0e5 That the core system code of Haiku is distributed under the terms of the MIT
license was nowhere mentioned. I added an explaination to the copyrights section
and also mentioned that clicking a license name will open the respective
license for reading.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28557 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 10:31:52 +00:00
Stephan Aßmus e0540f7ee3 Patch by Humdinger:
* Added docs and screenshots for preference panels:
     Appearance, Backgrounds, DataTranslations, E-mail,
     Filetypes, Fonts, Keyboard, Keymap, Menu, Mouse,
     Network, Screen, Screensaver, Sounds, Time, VirtualMemory
    Adapted some contents for E-mail preferences from
    src/documentation/haiku_user_guide/HaikuUserGuide.txt
    As I haven't succeeded to get email running in vmware, I'd appreciate if someone
    can proof read what's written in E-mail preferences.
* Added preferences to the user guide contents.
* Various formatting details and inter-documents-links

Wow! Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28555 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-07 21:16:24 +00:00
Stephan Aßmus bf5a91e2ff Added Adrian Panasiuk for his very good bug reporting work and helpful
patches. Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 22:52:50 +00:00
Stephan Aßmus f7c8477593 * Don't invalidate anything in offscreen windows. NetPositive is doing
slightly strange redrawing, including scrolling the offscreen view
  that it uses in "flicker free" mode (which is the default). Invalidation
  does not work in offscreen windows, since the client thread is not running
  and certainly won't redraw anything. But that will leave a non-drawable
  region on the app_server side of things. Simply don't invalidate in
  this case. From what I have seen, redrawing in NetPositive seems to
  work fine now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 19:19:54 +00:00
Stephan Aßmus e98ee1410a * big cleanup of the tracing support, output useful information
for most messages, use debug_printf(), cleanup line breaks
* check return code of last link method in a lot more places
* changed some printf() and fprintf() into debug_printf()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 19:16:56 +00:00
Stephan Aßmus 3005b1d6f5 Always retrieve the "would be mount point" of the partition
in AutoMounter::InitialMountVisitor::Visit(), otherwise restoring
mount options, like read-only mounting, would never work. This
kind of mixes the options of the mount settings, since it partially
remembers the settings even if the option is not "only previously
mounted disks", but it should not hurt anyways. As a side effect,
this should also fix the mount notification sent to Tracker, as
the path should only have been correct for the "mount previous disks"
setting.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28533 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 11:50:38 +00:00
Stephan Aßmus b545073f08 * Moved the global BPrivate::WidthBuffer from BTextView into BPrivate as
gWidthBuffer.
* Tracker PoseView now uses BPrivate::gWidthBuffer instead of it's own
  instance.
* TextView.h and PoseView.h are now a little cleaner.
* InterfaceDefs.cpp now deletes gWidthBuffer in _fini_interface_kit_().
* Added binary compatibility support for NetPositive in WidthBuffer.h and .cpp.
  Obviously it kind of defeats the purpose of having WidthBuffer neatly tucked
  away in the BPrivate namespace, but Haiku should run NetPositive, I guess.
  Fixes #2879.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 11:31:40 +00:00
Stephan Aßmus ef367a8a81 Small coding style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28530 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 11:18:26 +00:00
Stephan Aßmus 53bc794334 Free buffer in error case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 11:18:01 +00:00
Stephan Aßmus de36f71531 More or less applied patch by anxiety that implements showing a file
icon in the MediaPlayer Info window. I changed it a bit, so that the
icon retrieval only happens at the file change notification (quite
important, since the info window receives playback position notifications).
I also changed it to take the icon from the file first, if there is one.
Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-05 16:46:59 +00:00
Stephan Aßmus 19b75ed8a8 Small cleanup. Use BitmapFlags() also in the other condition (don't
hardcode overlay color space).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-05 16:10:59 +00:00
Stephan Aßmus 8443d21cf8 Included "Mike's Arbitrary Precision Math Library" in DeskCalc (BSD style
license) and rebased the ExpressionParser from double on the MAPM data type.
Currently, the binary operators are not supported anymore, but the imprecise
calculations were getting on my nerves. I think a lot more neat functions
could now be supported, but I have not looked into it further. I also didn't
dare look closer at the C code of the library, but it seems to be well
tested. It's portable by all means, I guess even if the target platform has
8.3 char file names to hold the code... Luckily, the library inclused a C++
wrapper class for the data type (MAPM) which makes it fairly comfortable to
use and hides the ugly C stuff and messy memory management.

The result seems to be quite nice so far. Previously, I couldn't even calculate
my finances without eventually getting some rounding errors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-04 20:47:41 +00:00
Stephan Aßmus ca89b8ff59 * The app_server implementation of BView::GetClippingRegion() was using the
wrong check to see if the view was currently visible. This fixes the problem
  that tool tips would popup for windows that are located on other workspaces.
* Removed commented out code that is no longer needed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-04 15:27:56 +00:00
Stephan Aßmus 5ae0bbaad0 Added test for BWindow::FindView(BPoint).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-04 14:47:18 +00:00
Stephan Aßmus a5a4ec57c5 Fixed two more problems with BWindow::FindView(BPoint):
* The function is not supposed to return hidden views.
* After iterating over the child views, the "view" variable was clobbered,
  so it didn't work to return the current view if none of it's child views
  were hit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-04 14:45:58 +00:00
Stephan Aßmus c1513476b3 SetWordWrap() did not work when the BTextView was not (yet) attached to a
window this fixes the tool tip size/layout in apps that use BubbleHelper
(Beam, WonderBrush, ...). Thanks to Rene and Stefano for sending me a test
application.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-04 10:54:34 +00:00
Stephan Aßmus 1e1d598f0f Updated several optional packages:
* Firefox -> 2.0.0.17, includes new HVIF icon
* VLC -> renamed VLC to "VLC media player" which is what the official name is
* Pe -> updated to most recent version (called it RC2) which includes a few
  fixes and new HVIF icons for most of it's supported document types. Renamed
  the application folder to "Pe" and removed the "Drag lpe here to install"
  link. Renamed the application itself to "Pe".

Hope these changes are alright with everyone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-03 22:26:37 +00:00
Stephan Aßmus 40fa49e7b8 Oversight: When FFM is turned off, don't focus the window under the mouse
on mouse up if there was a focus-locked window.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-03 19:57:05 +00:00
Stephan Aßmus 21b40edd75 Implemented respecting B_LOCK_WINDOW_FOCUS that a view can set using
SetMouseEventMask() from within it's mouse hooks. Among other things,
scroll bars won't stop scrolling in FFM mode now if you accidentally
leave the window with the mouse, something which is very likely.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-03 19:34:13 +00:00
Stephan Aßmus 6198dc0e17 To allow testing the ViewHWInterface (used in the test environment) with
both double buffering and single buffering, Invalidate() needs to be
virtual and ViewHWInterface needs to decide where to invalidate it's host
window.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-03 19:31:26 +00:00
Stephan Aßmus c470027d27 Tracked down a busy loop that I could reproduce pretty reliably with
tool tips in WonderBrush. The reason was that the text rect is getting
smaller and smaller each time the tool tip is shown (even though there
is only one word), and the line break moves one char towards the beginning
each time. After four times, the busy loop would kick in reliably. I cannot
really say that I understand the code, though. But that's the spot anyways.
Stefano, could you have a look?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 21:40:44 +00:00
Stephan Aßmus f9f1555066 These values feel slightly more like running without Synaptics driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 20:08:27 +00:00
Stephan Aßmus 8f924a8469 Forgot to disable debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 19:46:54 +00:00
Stephan Aßmus eab5a0f231 Experimented with the way the absolute touchpad coordinates are translated into
relative mouse movements. Removed the "history" and replaced it with a method
to accumulate the deltas. Very small deltas are somewhat suppressed, but still
accumulate. Overall, this improves the touchpad sensitivity for small movements
without introducing unwanted jitter. This also keeps the direction of slightly
"non-straight" movements better. I also changed the scale somewhat so that
the acceleration does not feel too little anymore.

These are the remaining problems I have:
* Tap-clicks are sometimes not recognized
* releasing the finger from the pad (which is pressure sensitive) sometimes
  still injects unwanted mouse movement, which may be possible to be supressed
  when looking at the pressure change and recognizing the release.
* scrolling has changed a bit due to my changes and feels a bit too sensitive
  now

Please check it out if you like (ps2_dev.c:105) and tell me what you think.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 19:43:08 +00:00
Stephan Aßmus bff51d943a Recursive scanning of already existing touchpad devices in the devfs never
worked, because the root scanning directory was declared without "/dev/".
This makes restarting the input_server work with the touchpad driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 13:15:47 +00:00
Stephan Aßmus 855012f2bd * Followed a suggestion made by Axel and removed the custom logfile
solution and replaced it by dumping output to the syslog. (Also
  disabled debug output by default.)
* Fixed wrong header guard.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 12:55:18 +00:00
Stephan Aßmus 60266d74d9 * ps2_synaptics.c - small cleanup
* ps2_dev.c - accidentally turned Synaptics support back on with my last commit. Sorry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 11:47:51 +00:00
Stephan Aßmus 03973d27eb Automatic white space cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 11:30:41 +00:00
Stephan Aßmus b5c3e3f430 Patch by Clemens Zeidler: I (stippi) broke the detection for
standard versus extended PS/2 mice by simplifying the naming
of the devices but forgetting to adapt this part of the code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 10:49:23 +00:00
Stephan Aßmus 2c4a095da8 Patch by Clemens Zeidler: Move debugging output after the check for fConnected
in UpdateSettings() to avoid a crash when there is no TouchPad at all.
Changes by myself: Adapted coding style and added a comment to ConnectToTouchPad()
on why the loop is not exited as soon as the device is found.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 10:46:50 +00:00
Stephan Aßmus fb1502680c Turn off synaptics touchpad support for the time being.
I am also not happy with the acceleration yet and as reported
by others, there are problems with real mice as well (now wheel
support anymore). With the plain PS/2 driver, I can slide my
finger slowly over the touchpad and the cursor would react/follow
precisely the movement. In Synaptics mode however, there are
unexpected pauses in the movement of the cursor. In any case, the
patch is finally in and I or anyone else can continue to work
on it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28443 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 20:33:14 +00:00
Stephan Aßmus dd85ce0d07 * Check the return codes returned by the command functions
in probe_synaptics().
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28442 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 20:29:50 +00:00
Stephan Aßmus 99c69d9a2b More coding style cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 16:28:45 +00:00
Stephan Aßmus 03d0e639fc * Fixed more coding style issues.
* White space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 16:08:57 +00:00
Stephan Aßmus 802b633082 * Fixed some of the weirdly changed define names.
* A few more style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 15:02:35 +00:00
Stephan Aßmus 1ecbbd9c27 Darn, SVN checked only modified stamps of the files, not the content.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 13:22:29 +00:00
Stephan Aßmus c3a113e4b4 ps2_mouse.c was refactored into ps2_standard_mouse.c, but I applied the
patch wrongly. This should hopefully fix it. Only my coding style cleanup
history should be "lost" this way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 13:11:53 +00:00
Stephan Aßmus 5bb8f08567 * standart -> standard
* Hopefully fixed most of the coding style violations
* ps2_trackpoint.h had the wrong header guard


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 13:00:00 +00:00
Stephan Aßmus 287f426f6a * Coding style cleanup
* Applied the changes that were done to MouseInputDevice:
	- use BObjectList,
	- take adventage of BPathMonitor node monitor message fieds
	- remove the device in the polling thread upon ioctl() error
* Added TODOs about refactoring the code together with MouseInputDevice.
Untested, but the code is so similar, I am pretty confident it still works.
(famous last words... will test soon anyways)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28421 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 11:40:48 +00:00
Stephan Aßmus 239fd643df * Added Clemens Zeidler to list of authors of the Touchpad add-on.
* Added myself to Mouse and Keyboard add-ons for my recent work on them.
* Small cleanup in KeyboardInputDevice.h-


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28420 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 11:09:28 +00:00
Stephan Aßmus 8b0dc5ae13 Added Clemens Zeidler to the list of contributors for his
Synaptics Touchpad driver patch. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 10:53:58 +00:00
Stephan Aßmus b40eb373c2 Added Synaptics touchpad preflet and input_server add-on to
the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 10:49:46 +00:00
Stephan Aßmus 6849a22864 Patch by Clemens Zeilder:
* Implemented Synaptics touchpad support in the PS2 bus_manager by
  refactoring/splitting the structure some and adding touchpad device
  handling.
* Implemented Touchpad input_server device add-on
* Created Touchpad preflet for configuring advances Synaptics touchpad
  options like scroll region (both horizontal and vertical) as well
  as other neat stuff

Thanks a lot, Clemens!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 10:48:35 +00:00
Stephan Aßmus d9e3b747bf * Mention Alt+N and Alt+E as the most useful shortcuts in a Filepanel
* Unify description style


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 19:04:49 +00:00
Stephan Aßmus 125ec81512 r28258 (adapting BScrollView to be usable in layout management) exposed a
problem in TextSearch. After the change, the scrollbar and child view layout
would be messed up there. The reason is that TextSearch calls
scrollview->ResizeToPreferred() prior to adding it to the window. In this
situation, the child views (scrollbars, target view) do not follow the parent
view. Before r28258, ResizeToPreferred() would not change the size of the
view (calling it in TextSearch is stupid anyways, since it is layouted later
in the code). I have thought about how to best fix this. I know 100% that there
is code out there that will mess with scrollbar layout. So it wouldn't be a
good option to refactor the layout out of BScrollView::DoLayout() and calling
that method from AttachedToWindow(), although that seems like the cleanest
option. Instead, I opted to simply reject resizing in ResizeToPreferred()
when the scroll view is not yet attached to a window. What do others think?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 18:51:13 +00:00
Stephan Aßmus a6b4486702 * Do not continue in the loop when encountering B_INTERRUPTED from
acquire_sem_etc(), but treat it as an error instead. This allows
  to kill device polling threads in the input_server and prevents
  a busy loop in the kernel then. Before the input_server was shutting
  down devices upon quit (happens only when restarting it), this
  busy loop could also be observed, since then polling threads would
  be quit on exit of the team.
* Supply B_INFINITE_TIMEOUT for the MouseDevice instead of 0. Does not
  change anything, but was probably not intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28407 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 17:31:21 +00:00
Stephan Aßmus 04910d5d52 Fixed various problems that caused the scrollbars and the group view to be
layouted incorrectly:
* Only remove the insets if there are any when no tabview is needed.
* Use Bounds() when creating the scrollbars, not Frame() (this probably
  worked correctly only when the DynamicScrollView was the only child in a
  window...)
* Simplify layouting the scrollbars and target view, always do so, since it
  isn't clear if the host window uses the old style view follow modes, the
  target view had no follow mode anyways, so we need to layout it for sure.
* Correct the "edged in" effect of the TitleView drawing.

This fixes the bad drawing artifacts in the Media preflet when scrollbars
are needed to embed a larger parameter web view.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 11:43:05 +00:00
Stephan Aßmus 1e2b06a58b Patch by Humdinger:
* Slightly improved the wording on the Welcome page
* Corrected some wrong HTML tags here and there
* Improvements on the Bug Reports page
* Added paragraph on file panels on the general GUI page
* Added Filesytem Layout page
* Added Boot Loader page (kernel boot options)
* Added Keyboard Shortcuts page (also moved the paragraph about default command
  key there)
* Prepared index pages for Applications, Preferences, Demos and Desktop Applets


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 09:08:15 +00:00
Stephan Aßmus 9d42ec70c9 Several problems prevented USB HIDs to be opened, closed and reopened:
* The first problem was introduced by myself, when I added deleting the
  transfer semaphore in HIDDevice::Close(). Obviously, I should (re)create it
  in Open() then, or it won't work another time. (Open() is now the only place
  where it's created.)
* The second problem was when transfers have already been scheduled the
  last time the device was open, but never triggered yet. We need to reset the
  fTransferUnprocessed flag, or we won't schedule another transfer but
  wait on the transfer semaphore anyways in Control(). I also added
  canceling the usb transfers with the stack in Close().
* The remaining problems were specific to the KeyboardDevice, the repeat
  key stuff needs to be reset in Open(). I also added unsetting the repeat
  key when the key release is detected, but this should have already worked,
  because the semaphore timeout was reset to B_INFINITE_TIMEOUT.

One can now "/system/servers/input_server -q" and everything will be back
in working order. There may be some remaining problems in the Wacom driver
which I have not yet looked at.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-29 21:23:19 +00:00
Stephan Aßmus e01a043190 Sorry for the confusing patch...
* Made KeyboardInputDevice more similar to MouseInputDevice, the object to
  track individual keyboards has become the class KeyboardDevice. Moved
  much functionality that used to be in KeyboardInputDevice into
  KeyboardDevice.
  Functionally, it should still be the same, but there are two important
  changes:
  - Each KeyboardDevice now has it's own Keymap. At first, it is not
    visible by the user, since all KeyboardDevices still adopt the keymap
    if the user reconfigures it. But it will make it easier to assign
    individual keymaps to each attached keyboard (and perhaps associate them
    with a vendor/product or some other means). The more immediate side effect
    is that there is no longer a confusion about the keyboard locks. If
    you press NumLock on your external keyboard, it will no longer enable
    NumLock on your notebooks internal keyboard.
  - KeyboardDevice now has a Stop() method, which it will call in it's
    destructor. This will make sure that the control thread is cleanly
    exited and does not end up invoking methods on a deleted object.
* Rewrote the tracing implementation in MouseInputDevice.cpp. At least it
  helped track me down the following problem:
* Both KeyboardDevice and MouseDevice now set fActive to "false" *before*
  closing the device. Since the control threads run at high priority, chances
  are high that rescheduling happens as soon as the device unblocks in
  ioctl() and returns an error. In that case, the control threads would
  check fActive and it would still be "true" and the whole idea of bailing
  out because we're already in Stop() would not work, causing a double free
  in the end.

All of this is nice and more correct, but input_server is still crashing
when restarting it via "input_server -q"... :-(


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 22:40:03 +00:00
Stephan Aßmus 393f282c79 * Mark InputDeviceListItems only as running if calling Start() for the
device returned B_OK.
* In the InputServer destructor, don't check the fAddOnManager pointer,
  but check the success of calling Lock() on it instead, which should
  be much safer.
* In StartStopDevices(), really start or stop all published devices for
  the given BInputServerDevice, not only the first one found. Simplify
  the check whether anything needs to be done.
* Change a bit the return codes of StartStopDevices(). Especially the
  version that's supposed to start or stop all devices will still try
  to do it for the rest of them.
* Removed no longer needed _FindInputDeviceListItem().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 22:19:55 +00:00
Stephan Aßmus dab68c33ed * When a device closes, delete the transfer semaphore, so that threads blocking
on it are unblocked and get an error.
* Make fOpen volatile to prevent unwanted caching effects when checking it from
  different threads. (?)
* Check IsOpen() in the KeyboardDevice class in more acquire_sem_etc() return
  cases, analogous to the MouseDevice class.

I am still getting a problem when relaunching input_server with the input_server
add-on thread that ioctl()s on a USB keyboard fd, which should have never fired
because it's a fake device from a KVM. After the first input_server instance is
gone, this thread keeps on busy looping in acquire_sem_etc()->switch_sem() from
within the ioctl() of the KeyboardDevice usb_hid driver. Still on it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 16:52:39 +00:00
Stephan Aßmus dae439fe60 Init the ref_count with 1, since the first AddPath() would leave it
at 0. A single AddPath()+RemovePath() would therefore leave a not
anymore needed path_entry(), while a AddPath()+AddPath()+RemovePath()
would remove/delete the path_entry while it was actually still used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 16:44:58 +00:00
Stephan Aßmus 9dd2d40e39 Fixed a race condition and resulting deadlock I introduced, which
resulted in the keyboard not working (at least on my Lenovo/IBM T60).
The device control thread could become aware of a dead device
at the time another thread (for example the add-on manager thread)
is already waiting for it. Then it tried to remove the device and
got stuck on locks that the other thread already holds (InputDeviceItem
list lock). Now the control threads check the "active" flag before
trying to remove the devices themselves, which, when set, is a sure
sign that the devices are already being removed and they don't need
to take care of it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 11:28:25 +00:00
Stephan Aßmus 0d2fb32f12 As pointed out by Axel, this TODO is invalid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-27 10:55:41 +00:00
Stephan Aßmus 7e47a4ee00 patch by Humdinger:
* Various fixes and corrections
* Preparation for new sections


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-26 11:23:20 +00:00
Stephan Aßmus b93eb3a008 New and updated icon work by zuMi! Thanks a lot!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-25 11:10:11 +00:00
Stephan Aßmus c5555ad3c0 * Ignore B_ENTRY_REMOVED node monitor messages.
* When the device watcher/control thread encounteres an error when
  read()ing or ioctl()ing the device, don't just quit the thread and
  leave a stale device add-on hanging there, but instead trigger
  _RemoveDevice() to exit this cleanly. This also takes care of calling
  _RemoveDevice() only from one thread. However, it adds a race condition
  should a mouse or keyboard be unplugged and plugged at the same time.
  I need to think about how to fix that cleanly, although the situation
  may be theoretical only... This fix seems to fix another problem with
  hot-plugging USB mice, before this change, the first mouse entry in
  /dev/input/mouse/usb/ was never gone and I got two entries after unplugging
  and replugging.
* When using BObjectList configured to own the entries - don't delete the
  entries! Also don't call RemoveItem() before still using the item. Took
  me all day to find this one, because the code looked so... correct. :-}
* In _AddDevice() call _RemoveDevice() just for the sake of it. It is really
  important that no device with the same name is published twice. The PS/2
  driver behaves strange in that it publishes device more than once, if
  I understand correctly, until it decides that there is no device.
* Only StartMonitoringDevice() /after/ having performed the initial device
  scan! Or else we may get ourselves confused. I don't know if this was
  an actual problem, but the code was like that before and it seems saner
  to me. Seeing there is no locking in the device add-on itself, we may
  already enter the code from the node monitor thread.

This should fix #2894.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 21:46:36 +00:00
Stephan Aßmus 3363dbce1f Small coding style correction.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 21:34:14 +00:00
Stephan Aßmus 740d899004 * InputDeviceListItem::fDevice was not maintaining it's own memory for the
device path, but instead pointing to memory owned by some device addon
  instance.
* Added TODO in the AddOnManager init code about a possible race condition
  which I have not varified yet.
* Check the return code of BList::RemoveItem() before deleting the item...
  pure defensive programming.
* For the time being, print a warning into the syslog when a device name is
  registered twice.
* When failing to Unflatten() an event, don't continue in the code after
  deleting it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 21:33:46 +00:00
Stephan Aßmus 1a1a4f955c * Updated the license header.
* Use new(nothrow) to allocate the MethodReplicant.
* fSignature needs to be free()d, not deleted.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28318 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 21:29:35 +00:00
Stephan Aßmus 944bc06060 * The way subdirectories for the input_server add-ons were defined was a bit
weird.
* Set fHandler to NULL in _UnregisterAddOns(), just in case it is called
  twice (which it probably never is... but be defensive).
* If a B_NODE_MONITOR message does not contain all the necessary fields,
  drop into the debugger when compiling in DEBUG mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 21:28:21 +00:00
Stephan Aßmus c2006b1a52 Don't skip over device items when re-scanning the watched folders for the
devices that were removed. Should use the BPathMonitor anyways...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28315 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 20:36:42 +00:00
Stephan Aßmus 2d265d2a5b * Removed some no longer used testing code.
* Fixed unloading the add-on image twice in error case of failing to
  add the add-on info to the list.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 09:20:00 +00:00