* The Be API requires that options and mask is 0 to remove a mask using

BView::SetEventMask(). This fixes bug #3928.
* And while the app_server handled that correctly, BView actually did not, and
  stored the wrong value.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30772 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2009-05-16 21:09:33 +00:00
parent 314854708a
commit d69a73dfc7
2 changed files with 8 additions and 3 deletions

View File

@ -104,7 +104,10 @@ VolumeControl::AttachedToWindow()
{
BSlider::AttachedToWindow();
SetEventMask(_IsReplicant() ? 0 : B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
if (_IsReplicant())
SetEventMask(0, 0);
else
SetEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
BMediaRoster* roster = BMediaRoster::CurrentRoster();
if (roster != NULL && fMixerControl->GainNode() != media_node::null) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2001-2008, Haiku.
* Copyright 2001-2009, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
@ -1587,7 +1587,9 @@ BView::SetEventMask(uint32 mask, uint32 options)
if (fEventMask == mask && fEventOptions == options)
return B_OK;
fEventMask = mask | (fEventMask & 0xffff0000);
// don't change the mask if it's zero and we've got options
if (mask != 0 || options == 0)
fEventMask = mask | (fEventMask & 0xffff0000);
fEventOptions = options;
fState->archiving_flags |= B_VIEW_EVENT_MASK_BIT;