office-gobmx/vcl/inc/salmenu.hxx
Michael Weghorn f51b220b95 tdf#149805 tdf#151677 tdf#152217 tdf#154043 tdf#153458 tdf#153800 Revert "VCL expect
... correct frame size for native menubars"

This reverts

    commit afc828b983
    Date:   Sat May 28 23:47:21 2022 +0200

        VCL expect correct frame size for native menubars

        ... and renove the wrong framesize hack in the Qt backend

because it caused several regressions and unfortunately
the commit also doesn't fix all of the bugs mentioned
in its commit message (while some previous patch sets of the
change did address more, yet had other issues, s.a. the discussion
in the commit's Gerrit change [1]).

While e.g. the drag and drop issues reported in tdf#153458
and tdf#153800 could be fixed by translating the event position
using `mapToParent()` (as is done in
`QtWidget::fillSalAbstractMouseEvent` with the above commit
in place), I currently don't see how to address the other
issues and the overall direction of the change is not fully
clear to me at this point. (There are also other pending changes
in the relation change still pending in Gerrit that would presumably
need more work/analysis.)

After all, it seems the best way forward to revert the
commit for now.

This also reverts the follow-up commit

    commit 25da920040
    Date:   Thu Jul 21 11:33:02 2022 +0200

        Make JunitTest_toolkit_unoapi_1 succeed again on macOS

that fixed a test failure introduced by the above commit.

Luckily, there seem to be no follow-up commits that
depend on this and the commits can be reverted cleanly
without the need to resolve any conflicts manually.

This reverts commit 25da920040.
This reverts commit afc828b983.

[1] https://gerrit.libreoffice.org/c/core/+/135082

Change-Id: I4c099ad7de8cbbad10da391ede4770d8c748fbde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149495
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-03-29 10:46:00 +00:00

101 lines
4.1 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_VCL_INC_SALMENU_HXX
#define INCLUDED_VCL_INC_SALMENU_HXX
#include <utility>
#include <vcl/menu.hxx>
#include <vcl/image.hxx>
struct SystemMenuData;
class FloatingWindow;
class SalFrame;
struct SalItemParams
{
Image aImage; // Image
VclPtr<Menu> pMenu; // Pointer to Menu
OUString aText; // Menu-Text
MenuItemType eType; // MenuItem-Type
sal_uInt16 nId; // item Id
MenuItemBits nBits; // MenuItem-Bits
};
struct SalMenuButtonItem
{
sal_uInt16 mnId;
Image maImage;
OUString maToolTipText;
SalMenuButtonItem() : mnId( 0 ) {}
SalMenuButtonItem( sal_uInt16 i_nId, Image aImg, OUString i_TTText )
: mnId( i_nId ), maImage(std::move( aImg )), maToolTipText(std::move( i_TTText )) {}
};
class VCL_PLUGIN_PUBLIC SalMenuItem
{
public:
virtual ~SalMenuItem();
};
class VCL_PLUGIN_PUBLIC SalMenu
{
public:
virtual ~SalMenu();
virtual bool VisibleMenuBar() = 0; // must return true to actually DISPLAY native menu bars
// otherwise only menu messages are processed (eg, OLE on Windows)
virtual void ShowMenuBar( bool ) {}
virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) = 0;
virtual void RemoveItem( unsigned nPos ) = 0;
virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) = 0;
virtual void SetFrame( const SalFrame* pFrame ) = 0;
virtual void SetItemBits( unsigned /*nPos*/, MenuItemBits /*nBits*/ ) {}
virtual void CheckItem( unsigned nPos, bool bCheck ) = 0;
virtual void EnableItem( unsigned nPos, bool bEnable ) = 0;
virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const OUString& rText )= 0;
virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) = 0;
virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const vcl::KeyCode& rKeyCode, const OUString& rKeyName ) = 0;
virtual void GetSystemMenuData( SystemMenuData* pData ) = 0;
virtual bool ShowNativePopupMenu(FloatingWindow * pWin, const tools::Rectangle& rRect, FloatWinPopupFlags nFlags);
virtual void ShowCloseButton(bool bShow);
virtual bool AddMenuBarButton( const SalMenuButtonItem& ); // return false if not implemented or failure
virtual void RemoveMenuBarButton( sal_uInt16 nId );
virtual void Update() {}
virtual bool CanGetFocus() const { return false; }
virtual bool TakeFocus() { return false; }
// TODO: implement show/hide for the Win/Mac VCL native backends
virtual void ShowItem( unsigned nPos, bool bShow ) { EnableItem( nPos, bShow ); }
// return an empty rectangle if not implemented
// return Rectangle( Point( -1, -1 ), Size( 1, 1 ) ) if menu bar buttons implemented
// but rectangle cannot be determined
virtual tools::Rectangle GetMenuBarButtonRectPixel( sal_uInt16 i_nItemId, SalFrame* i_pReferenceFrame );
virtual int GetMenuBarHeight() const;
virtual void ApplyPersona();
};
#endif // INCLUDED_VCL_INC_SALMENU_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */