summaryrefslogtreecommitdiffstats
path: root/widget/gtk/nsMenuSeparator.cpp
diff options
context:
space:
mode:
authorLootyhoof <lootyhoofer@gmail.com>2020-06-06 00:37:29 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-06-13 11:49:36 +0200
commit6235023c8bff80273981c70a06cb9decb4a4ffa5 (patch)
tree9673404b3735e8a8b6bd3e890c3d6b5d2d34d76c /widget/gtk/nsMenuSeparator.cpp
parentf51beb3fdab3d586af081ac14478ea59e0523af4 (diff)
downloadUXP-6235023c8bff80273981c70a06cb9decb4a4ffa5.tar
UXP-6235023c8bff80273981c70a06cb9decb4a4ffa5.tar.gz
UXP-6235023c8bff80273981c70a06cb9decb4a4ffa5.tar.lz
UXP-6235023c8bff80273981c70a06cb9decb4a4ffa5.tar.xz
UXP-6235023c8bff80273981c70a06cb9decb4a4ffa5.zip
Issue MoonchildProductions/UXP#1578 - Add global menubar support for GTK
Diffstat (limited to 'widget/gtk/nsMenuSeparator.cpp')
-rw-r--r--widget/gtk/nsMenuSeparator.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/widget/gtk/nsMenuSeparator.cpp b/widget/gtk/nsMenuSeparator.cpp
new file mode 100644
index 000000000..893c5c7f0
--- /dev/null
+++ b/widget/gtk/nsMenuSeparator.cpp
@@ -0,0 +1,74 @@
+/* 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/. */
+
+#include "mozilla/Assertions.h"
+#include "mozilla/Move.h"
+#include "nsAutoPtr.h"
+#include "nsCRT.h"
+#include "nsGkAtoms.h"
+#include "nsStyleContext.h"
+
+#include "nsDbusmenu.h"
+
+#include "nsMenuContainer.h"
+#include "nsMenuSeparator.h"
+
+using namespace mozilla;
+
+void
+nsMenuSeparator::InitializeNativeData() {
+ dbusmenu_menuitem_property_set(GetNativeData(),
+ DBUSMENU_MENUITEM_PROP_TYPE,
+ "separator");
+}
+
+void
+nsMenuSeparator::Update(nsStyleContext* aContext) {
+ UpdateVisibility(aContext);
+}
+
+bool
+nsMenuSeparator::IsCompatibleWithNativeData(DbusmenuMenuitem* aNativeData) const {
+ return nsCRT::strcmp(dbusmenu_menuitem_property_get(aNativeData,
+ DBUSMENU_MENUITEM_PROP_TYPE),
+ "separator") == 0;
+}
+
+nsMenuObject::PropertyFlags
+nsMenuSeparator::SupportedProperties() const {
+ return static_cast<nsMenuObject::PropertyFlags>(
+ nsMenuObject::ePropVisible |
+ nsMenuObject::ePropType
+ );
+}
+
+void
+nsMenuSeparator::OnAttributeChanged(nsIContent* aContent, nsIAtom* aAttribute) {
+ MOZ_ASSERT(aContent == ContentNode(), "Received an event that wasn't meant for us!");
+
+ if (!Parent()->IsBeingDisplayed()) {
+ return;
+ }
+
+ if (aAttribute == nsGkAtoms::hidden ||
+ aAttribute == nsGkAtoms::collapsed) {
+ RefPtr<nsStyleContext> sc = GetStyleContext();
+ UpdateVisibility(sc);
+ }
+}
+
+nsMenuSeparator::nsMenuSeparator(nsMenuContainer* aParent,
+ nsIContent* aContent) :
+ nsMenuObject(aParent, aContent) {
+ MOZ_COUNT_CTOR(nsMenuSeparator);
+}
+
+nsMenuSeparator::~nsMenuSeparator() {
+ MOZ_COUNT_DTOR(nsMenuSeparator);
+}
+
+nsMenuObject::EType
+nsMenuSeparator::Type() const {
+ return eType_MenuItem;
+}