* Fixed header include order in MouseView.
* Updated copyright section. * Fixed border mis-alignment of buttons and group view. * Fixed #3528 by checking the current clipping region which tells us if windows overlap. Don't display the popup menu then. * Removed some superfluous calls. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29430 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,38 +1,31 @@
|
|||||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
/*
|
||||||
//
|
* Copyright 2003 - 2009, Haiku, Inc. All rights reserved.
|
||||||
// Copyright (c) 2003, OpenBeOS
|
* Distributed under the terms of the MIT license.
|
||||||
//
|
*
|
||||||
// This software is part of the OpenBeOS distribution and is covered
|
* Authors:
|
||||||
// by the OpenBeOS license.
|
* Jérôme Duval,
|
||||||
//
|
* Andrew McCall ([email protected])
|
||||||
//
|
* Axel Dörfler ([email protected])
|
||||||
// File: MouseView.cpp
|
*/
|
||||||
// Authors: Jérôme Duval,
|
#include "MouseView.h"
|
||||||
// Andrew McCall ([email protected])
|
|
||||||
// Axel Dörfler ([email protected])
|
|
||||||
// Description: Mouse Preferences
|
|
||||||
// Created: December 10, 2003
|
|
||||||
//
|
|
||||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
||||||
|
|
||||||
#include <InterfaceDefs.h>
|
|
||||||
#include <Button.h>
|
|
||||||
#include <Box.h>
|
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <TranslationUtils.h>
|
#include <Box.h>
|
||||||
#include <TextControl.h>
|
#include <Button.h>
|
||||||
#include <Slider.h>
|
#include <Debug.h>
|
||||||
#include <PopUpMenu.h>
|
|
||||||
#include <MenuField.h>
|
#include <MenuField.h>
|
||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
#include <Debug.h>
|
#include <PopUpMenu.h>
|
||||||
|
#include <Region.h>
|
||||||
|
#include <Slider.h>
|
||||||
|
#include <TextControl.h>
|
||||||
|
#include <TranslationUtils.h>
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
#include "MouseView.h"
|
|
||||||
#include "MouseWindow.h"
|
|
||||||
#include "MouseConstants.h"
|
|
||||||
#include "MouseBitmap.h"
|
#include "MouseBitmap.h"
|
||||||
|
#include "MouseConstants.h"
|
||||||
#include "MouseSettings.h"
|
#include "MouseSettings.h"
|
||||||
|
#include "MouseWindow.h"
|
||||||
|
|
||||||
|
|
||||||
static const int32 kOneButtonOffsets[4] = {0, 55};
|
static const int32 kOneButtonOffsets[4] = {0, 55};
|
||||||
@@ -144,6 +137,11 @@ MouseView::MouseDown(BPoint where)
|
|||||||
fButtons = B_SECONDARY_MOUSE_BUTTON;
|
fButtons = B_SECONDARY_MOUSE_BUTTON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the current clipping region before requesting any updates.
|
||||||
|
// Otherwise those parts would be excluded from the region.
|
||||||
|
BRegion clipping;
|
||||||
|
GetClippingRegion(&clipping);
|
||||||
|
|
||||||
if (fOldButtons != fButtons) {
|
if (fOldButtons != fButtons) {
|
||||||
Invalidate(BRect(0, kButtonTop,
|
Invalidate(BRect(0, kButtonTop,
|
||||||
fMouseDownBounds.Width(), kButtonTop + fMouseDownBounds.Height()));
|
fMouseDownBounds.Width(), kButtonTop + fMouseDownBounds.Height()));
|
||||||
@@ -163,23 +161,27 @@ MouseView::MouseDown(BPoint where)
|
|||||||
if (button < 0)
|
if (button < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
button = ConvertFromVisualOrder(button);
|
// We are setup to receive all mouse events, even if our window
|
||||||
|
// is not active, so make sure that we don't display the menu when
|
||||||
BPopUpMenu menu("Mouse Map Menu");
|
// the user clicked inside our view, but another window is on top.
|
||||||
BMessage message(kMsgMouseMap);
|
if (clipping.Contains(where)) {
|
||||||
message.AddInt32("button", button);
|
button = ConvertFromVisualOrder(button);
|
||||||
|
|
||||||
menu.AddItem(new BMenuItem("1", new BMessage(message)));
|
BPopUpMenu menu("Mouse Map Menu");
|
||||||
menu.AddItem(new BMenuItem("2", new BMessage(message)));
|
BMessage message(kMsgMouseMap);
|
||||||
menu.AddItem(new BMenuItem("3", new BMessage(message)));
|
message.AddInt32("button", button);
|
||||||
|
|
||||||
menu.ItemAt(getMappingNumber(fSettings.Mapping(button)))->SetMarked(true);
|
menu.AddItem(new BMenuItem("1", new BMessage(message)));
|
||||||
menu.SetTargetForItems(Window());
|
menu.AddItem(new BMenuItem("2", new BMessage(message)));
|
||||||
|
menu.AddItem(new BMenuItem("3", new BMessage(message)));
|
||||||
ConvertToScreen(&where);
|
|
||||||
menu.Go(where, true);
|
menu.ItemAt(getMappingNumber(fSettings.Mapping(button)))
|
||||||
|
->SetMarked(true);
|
||||||
Invalidate();
|
menu.SetTargetForItems(Window());
|
||||||
|
|
||||||
|
ConvertToScreen(&where);
|
||||||
|
menu.Go(where, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -259,9 +261,6 @@ MouseView::Draw(BRect updateFrame)
|
|||||||
DrawString(number,
|
DrawString(number,
|
||||||
BPoint(border.left + (border.Width() - StringWidth(number)) / 2, kButtonTop + 18));
|
BPoint(border.left + (border.Width() - StringWidth(number)) / 2, kButtonTop + 18));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sync();
|
|
||||||
SetDrawingMode(B_OP_COPY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ MouseWindow::MouseWindow(BRect _rect)
|
|||||||
AddChild(view);
|
AddChild(view);
|
||||||
|
|
||||||
// Add the main settings view
|
// Add the main settings view
|
||||||
fSettingsView = new SettingsView(Bounds().InsetBySelf(kBorderSpace + 1, kBorderSpace + 1),
|
fSettingsView = new SettingsView(Bounds().InsetBySelf(kBorderSpace, kBorderSpace),
|
||||||
fSettings);
|
fSettings);
|
||||||
view->AddChild(fSettingsView);
|
view->AddChild(fSettingsView);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user