From e2d5e00981adba4c2a6eeb94c30b10a9ee36fee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 10 Jul 2006 22:12:40 +0000 Subject: [PATCH] applied a patch from barber for bug #661. Thanks! This fixes a weird behavior when using the menu minor cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18093 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/input/MethodReplicant.cpp | 39 ++++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/servers/input/MethodReplicant.cpp b/src/servers/input/MethodReplicant.cpp index fbf534c270..31378b7f29 100644 --- a/src/servers/input/MethodReplicant.cpp +++ b/src/servers/input/MethodReplicant.cpp @@ -182,11 +182,12 @@ MethodReplicant::MouseDown(BPoint point) where = ConvertToScreen(point); fMenu.SetTargetForItems(this); - MethodMenuItem *item = (MethodMenuItem*)fMenu.Go(where, true, true, BRect(where - BPoint(4, 4), - where + BPoint(4, 4))); - if (item) { + BMenuItem *item = fMenu.Go(where, true, true, + BRect(where - BPoint(4, 4), where + BPoint(4, 4))); + + if (item && dynamic_cast(item)) { BMessage msg(IS_SET_METHOD); - msg.AddInt32("cookie", item->Cookie()); + msg.AddInt32("cookie", ((MethodMenuItem*)item)->Cookie()); BMessenger messenger(fSignature); messenger.SendMessage(&msg); } @@ -205,16 +206,16 @@ MethodReplicant::UpdateMethod(BMessage *message) { CALLED(); int32 cookie; - if (message->FindInt32("cookie", &cookie)!=B_OK) { - fprintf(stderr, "can't find cookie in message\n"); - return; - } + if (message->FindInt32("cookie", &cookie)!=B_OK) { + fprintf(stderr, "can't find cookie in message\n"); + return; + } MethodMenuItem *item = FindItemByCookie(cookie); - if (item == NULL) { - fprintf(stderr, "can't find item with cookie %lx\n", cookie); - return; - } + if (item == NULL) { + fprintf(stderr, "can't find item with cookie %lx\n", cookie); + return; + } item->SetMarked(true); fSegments->SetBits(item->Icon(), kRemoteWidth*kRemoteHeight, 0, kRemoteColorSpace); @@ -262,15 +263,15 @@ MethodReplicant::UpdateMethodMenu(BMessage *message) BMessage msg; if (message->FindMessage("menu", &msg)!=B_OK) { fprintf(stderr, "can't find menu in message\n"); - return; - } + return; + } PRINT_OBJECT(msg); BMessenger messenger; if (message->FindMessenger("target", &messenger)!=B_OK) { - fprintf(stderr, "can't find target in message\n"); - return; - } + fprintf(stderr, "can't find target in message\n"); + return; + } BMenu *menu = (BMenu *)BMenu::Instantiate(&msg); if (menu == NULL) { @@ -344,8 +345,8 @@ MethodReplicant::AddMethod(BMessage *message) CALLED(); int32 cookie; if (message->FindInt32("cookie", &cookie)!=B_OK) { - fprintf(stderr, "can't find cookie in message\n"); - return; + fprintf(stderr, "can't find cookie in message\n"); + return; } const char *name;