diff --git a/headers/build/private/app/AppMisc.h b/headers/build/private/app/AppMisc.h index 3a7cefcd60..ec6ad7e57c 100644 --- a/headers/build/private/app/AppMisc.h +++ b/headers/build/private/app/AppMisc.h @@ -1,28 +1,11 @@ -//------------------------------------------------------------------------------ -// Copyright (c) 2001-2002, OpenBeOS -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// -// File Name: AppMisc.h -// Author: Ingo Weinhold (bonefish@users.sf.net) -// Description: Miscellaneous private functionality. -//------------------------------------------------------------------------------ +/* + * Copyright 2001-2019 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Ingo Weinhold, bonefish@users.sf.net + * Jacob Secunda + */ #ifndef _APP_MISC_H #define _APP_MISC_H @@ -45,8 +28,6 @@ thread_id main_thread_for(team_id team); bool is_running_on_haiku(); -bool is_app_showing_modal_window(team_id team); - } // namespace BPrivate // _get_object_token_ diff --git a/src/build/libbe/app/AppMisc.cpp b/src/build/libbe/app/AppMisc.cpp index 634839eff6..26aa3a90e4 100644 --- a/src/build/libbe/app/AppMisc.cpp +++ b/src/build/libbe/app/AppMisc.cpp @@ -1,28 +1,11 @@ -//------------------------------------------------------------------------------ -// Copyright (c) 2001-2002, OpenBeOS -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// -// File Name: AppMisc.cpp -// Author: Ingo Weinhold (bonefish@users.sf.net) -// Description: Miscellaneous private functionality. -//------------------------------------------------------------------------------ +/* + * Copyright 2001-2019 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Ingo Weinhold, bonefish@users.sf.net + * Jacob Secunda + */ #include #include @@ -71,19 +54,5 @@ is_running_on_haiku() return (uname(&info) == 0 && strcmp(info.sysname, "Haiku") == 0); } -// is_app_showing_modal_window -/*! \brief Returns whether the application identified by the supplied - \c team_id is currently showing a modal window. - \param team the ID of the application in question. - \return \c true, if the application is showing a modal window, \c false - otherwise. -*/ -bool -is_app_showing_modal_window(team_id team) -{ - // TODO: Implement! - return true; -} - } // namespace BPrivate diff --git a/src/kits/app/AppMisc.cpp b/src/kits/app/AppMisc.cpp index e996190ab8..7f408175ea 100644 --- a/src/kits/app/AppMisc.cpp +++ b/src/kits/app/AppMisc.cpp @@ -1,10 +1,11 @@ /* - * Copyright 2001-2015, Haiku, Inc. + * Copyright 2001-2019, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: * Axel Dörfler, axeld@pinc-software.de * Ingo Weinhold, bonefish@@users.sf.net + * Jacob Secunda */ @@ -19,9 +20,12 @@ #include #include #include +#include +#include #include #include +#include namespace BPrivate { @@ -171,8 +175,30 @@ main_thread_for(team_id team) bool is_app_showing_modal_window(team_id team) { - // TODO: Implement! - return true; + int32 tokenCount; + int32* tokens = get_token_list(team, &tokenCount); + + if (tokens != NULL) { + MemoryDeleter tokenDeleter(tokens); + + for (int32 index = 0; index < tokenCount; index++) { + client_window_info* matchWindowInfo = get_window_info(tokens[index]); + if (matchWindowInfo == NULL) { + // That window probably closed. Just go to the next one. + continue; + } + + window_feel theFeel = (window_feel)matchWindowInfo->feel; + free(matchWindowInfo); + + if (theFeel == B_MODAL_SUBSET_WINDOW_FEEL + || theFeel == B_MODAL_APP_WINDOW_FEEL + || theFeel == B_MODAL_ALL_WINDOW_FEEL) + return true; + } + } + + return false; }