From e6629a65a263e29d80aa43c6c35214f626047028 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Tue, 21 Jun 2005 09:40:01 +0000 Subject: [PATCH] Misc cleanups git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13219 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/MenuBar.cpp | 27 ++++++++++----------------- src/kits/interface/SeparatorItem.cpp | 8 +++----- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/kits/interface/MenuBar.cpp b/src/kits/interface/MenuBar.cpp index 647551a0b4..2c71075dea 100644 --- a/src/kits/interface/MenuBar.cpp +++ b/src/kits/interface/MenuBar.cpp @@ -136,13 +136,11 @@ void BMenuBar::Draw(BRect updateRect) { // TODO: implement additional border styles - if (IsEnabled()) { - BRect bounds(Bounds()); - + if (IsEnabled()) { PushState(); - - // Restore the background color in case a menuitem - // was selected. + + BRect bounds(Bounds()); + // Restore the background of the previously selected menuitem DrawBackground(bounds & updateRect); SetHighColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), B_LIGHTEN_2_TINT)); @@ -369,17 +367,18 @@ BMenuBar::TrackTask(void *arg) receive_data(&id, &data, sizeof(data)); BMenuBar *menuBar = data.menuBar; - BWindow *window = menuBar->Window(); - menuBar->SetStickyMode(data.sticky); int32 action; menuBar->Track(&action, data.menuIndex, data.showMenu); + menuBar->fTracking = false; + // Sends a _MENUS_DONE_ message to the BWindow. // Weird: There is a _MENUS_DONE_ message but not a // _MENUS_BEGINNING_ message, in fact the MenusBeginning() // hook function is called directly. + BWindow *window = menuBar->Window(); window->PostMessage(_MENUS_DONE_); _set_menu_sem_(window, B_BAD_SEM_ID); @@ -441,15 +440,10 @@ BMenuBar::Track(int32 *action, int32 startIndex, bool showMenu) } while (true); - if (fSelected != NULL) { - window->Lock(); + if (window->Lock()) { SelectItem(NULL); - window->Unlock(); - } - - if (resultItem != NULL) { - window->Lock(); - resultItem->Invoke(); + if (resultItem != NULL) + resultItem->Invoke(); window->Unlock(); } @@ -491,7 +485,6 @@ BMenuBar::RestoreFocus() } } - void BMenuBar::InitData(menu_layout layout) { diff --git a/src/kits/interface/SeparatorItem.cpp b/src/kits/interface/SeparatorItem.cpp index 87d5b3922d..cbe63e8ea1 100644 --- a/src/kits/interface/SeparatorItem.cpp +++ b/src/kits/interface/SeparatorItem.cpp @@ -88,12 +88,12 @@ BSeparatorItem::Draw() return; BRect bounds = Frame(); + rgb_color oldColor = menu->HighColor(); menu_info menuInfo; get_menu_info(&menuInfo); switch (menuInfo.separator) { case 0: - // TODO: Check if drawing is pixel perfect menu->SetHighColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), B_DARKEN_1_TINT)); menu->StrokeLine(BPoint(bounds.left + 1.0f, bounds.top + 4.0f), @@ -102,11 +102,9 @@ BSeparatorItem::Draw() B_LIGHTEN_2_TINT)); menu->StrokeLine(BPoint(bounds.left + 1.0f, bounds.top + 5.0f), BPoint(bounds.right - 1.0f, bounds.top + 5.0f)); - menu->SetHighColor(0, 0, 0); break; case 1: - // TODO: Check if drawing is pixel perfect menu->SetHighColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), B_DARKEN_1_TINT)); menu->StrokeLine(BPoint(bounds.left + 9.0f, bounds.top + 4.0f), @@ -115,7 +113,6 @@ BSeparatorItem::Draw() B_LIGHTEN_2_TINT)); menu->StrokeLine(BPoint(bounds.left + 9.0f, bounds.top + 5.0f), BPoint(bounds.right - 9.0f, bounds.top + 5.0f)); - menu->SetHighColor(0, 0, 0); break; case 2: @@ -129,12 +126,13 @@ BSeparatorItem::Draw() B_LIGHTEN_2_TINT)); menu->StrokeLine(BPoint(bounds.left + 11.0f, bounds.top + 6.0f), BPoint(bounds.right - 11.0f, bounds.top + 6.0f)); - menu->SetHighColor(0, 0, 0); break; default: break; } + + menu->SetHighColor(oldColor); }