IJPL-156149 Drop support of GLobalMenuLinux

cleanup java code

GitOrigin-RevId: 549cfbe58406612d44960f43ff07edcac813719b
This commit is contained in:
artem.bochkarev
2024-07-01 09:32:37 +04:00
committed by intellij-monorepo-bot
parent 40585d1a25
commit 336265215c
14 changed files with 1 additions and 1516 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -54,7 +54,6 @@ class LinuxDistributionBuilder(
addNativeLauncher(distBinDir, targetPath, arch)
copyFileToDir(NativeBinaryDownloader.getRestarter(context, OsFamily.LINUX, arch), distBinDir)
copyFileToDir(sourceBinDir.resolve("${arch.dirName}/fsnotifier"), distBinDir)
copyFileToDir(sourceBinDir.resolve("${arch.dirName}/libdbm.so"), distBinDir)
generateBuildTxt(context, targetPath)
copyDistFiles(context, targetPath, OsFamily.LINUX, arch)

View File

@@ -20102,9 +20102,6 @@ a:com.intellij.openapi.wm.impl.InternalDecorator
- a:isHeaderVisible():Z
- isSplitUnsplitInProgress():Z
- a:setHeaderVisible(Z):V
com.intellij.openapi.wm.impl.LinuxGlobalMenuEventHandler
- com.sun.jna.Callback
- a:handleEvent(I,I):V
a:com.intellij.openapi.wm.impl.ListenableToolbarComboButton
- com.intellij.openapi.wm.impl.ToolbarComboButton
- <init>(com.intellij.openapi.wm.impl.ToolbarComboButtonModel):V
@@ -22115,18 +22112,6 @@ f:com.intellij.platform.ide.impl.presentationAssistant.PresentationAssistantStat
f:com.intellij.platform.ide.impl.presentationAssistant.WinKeyStrokePresentationKt
- sf:getWinKeyText(I):java.lang.String
- sf:getWinModifiersText(I):java.lang.String
f:com.intellij.platform.ide.menu.GlobalMenuLinux
- com.intellij.openapi.Disposable
- com.intellij.openapi.wm.impl.LinuxGlobalMenuEventHandler
- bindNewWindow(java.awt.Window):V
- s:create(javax.swing.JFrame):com.intellij.platform.ide.menu.GlobalMenuLinux
- dispose():V
- handleEvent(I,I):V
- s:isAvailable():Z
- s:isPresented():Z
- setRoots(java.util.List):V
- toggle(Z):V
- unbindWindow(java.awt.Window):V
c:com.intellij.platform.ide.menu.IdeJMenuBar
- javax.swing.JMenuBar
- add(javax.swing.JMenu):javax.swing.JMenu
@@ -22150,8 +22135,6 @@ c:com.intellij.platform.ide.menu.IdeJMenuBar
f:com.intellij.platform.ide.menu.IdeMainMenuActionCustomizer
- <init>():V
- customize(com.intellij.openapi.actionSystem.ex.ActionRuntimeRegistrar,kotlin.coroutines.Continuation):java.lang.Object
f:com.intellij.platform.ide.menu.LinuxIdeMenuBarKt
- sf:collectGlobalMenu(kotlinx.coroutines.CoroutineScope,java.util.function.Consumer):V
com.intellij.platform.impl.toolkit.ClientDesktopPeer
- a:browse(java.net.URI):V
com.intellij.platform.impl.toolkit.ClientToolkit

View File

@@ -15,7 +15,6 @@ com/jetbrains/WindowDecorations$CustomTitleBar
com/jetbrains/plugin/blockmap/core/BlockMap
com/jetbrains/plugin/blockmap/core/Chunk
com/jetbrains/plugin/blockmap/core/ChunkMerger
com/sun/jna/Callback
com/sun/jna/Memory
com/sun/jna/Pointer
com/sun/jna/Structure

View File

@@ -8,7 +8,6 @@ import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.platform.ide.menu.GlobalMenuLinux;
import com.intellij.ui.ExperimentalUI;
import org.jetbrains.annotations.NotNull;
@@ -31,7 +30,7 @@ public final class ViewMainMenuAction extends ToggleAction implements DumbAware,
@Override
public void update(@NotNull AnActionEvent e) {
super.update(e);
boolean makesSense = !ExperimentalUI.isNewUI() && (SystemInfo.isWindows || (SystemInfo.isLinux && !GlobalMenuLinux.isPresented()));
boolean makesSense = !ExperimentalUI.isNewUI() && (SystemInfo.isWindows || (SystemInfo.isLinux));
e.getPresentation().setEnabledAndVisible(makesSense);
}

View File

@@ -28,8 +28,6 @@ import com.intellij.openapi.wm.impl.*
import com.intellij.openapi.wm.impl.customFrameDecorations.header.CustomFrameDialogContent
import com.intellij.openapi.wm.impl.customFrameDecorations.header.CustomHeader
import com.intellij.platform.ide.CoreUiCoroutineScopeHolder
import com.intellij.platform.ide.menu.GlobalMenuLinux
import com.intellij.platform.ide.menu.LinuxIdeMenuBar.Companion.doBindAppMenuOfParent
import com.intellij.platform.util.coroutines.childScope
import com.intellij.ui.*
import com.intellij.ui.mac.screenmenu.Menu
@@ -163,12 +161,6 @@ open class FrameWrapper @JvmOverloads constructor(private val project: Project?,
// unwrap the image before setting as frame's icon
frame.iconImages = images.map { ImageUtil.toBufferedImage(it) }
}
if (SystemInfoRt.isLinux && frame is JFrame && GlobalMenuLinux.isAvailable()) {
WindowManager.getInstance().getFrame(project)?.let { parentFrame ->
doBindAppMenuOfParent(frame, parentFrame)
}
}
}
private fun executeOnDispose(task: () -> Unit) {

View File

@@ -569,7 +569,6 @@ open class IdeRootPane internal constructor(
val visible = SystemInfo.isMacSystemMenu ||
isFullScreen ||
(!IdeFrameDecorator.isCustomDecorationActive() &&
!(SystemInfoRt.isLinux && GlobalMenuLinux.isPresented()) &&
UISettings.shadowInstance.showMainMenu &&
!hideNativeLinuxTitle &&
(!isMenuButtonInToolbar || (ExperimentalUI.isNewUI() && isCompactHeader { computeMainActionGroups() })))
@@ -826,12 +825,7 @@ open class IdeRootPane internal constructor(
}
internal fun createMenuBar(coroutineScope: CoroutineScope, frame: JFrame, customMenuGroup: ActionGroup?): IdeJMenuBar {
if (SystemInfoRt.isLinux) {
return LinuxIdeMenuBar(coroutineScope = coroutineScope, frame = frame, customMenuGroup = customMenuGroup)
}
else {
return IdeJMenuBar(coroutineScope = coroutineScope, frame = frame, customMenuGroup = customMenuGroup)
}
}
internal fun getPreferredWindowHeaderHeight(isCompactHeader: Boolean): Int = JBUI.scale(

View File

@@ -1,8 +0,0 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.wm.impl;
import com.sun.jna.Callback;
public interface LinuxGlobalMenuEventHandler extends Callback {
void handleEvent(int uid, int eventType);
}

View File

@@ -24,7 +24,6 @@ import com.intellij.openapi.util.NlsSafe
import com.intellij.openapi.wm.IdeFocusManager
import com.intellij.openapi.wm.impl.IdeFrameImpl
import com.intellij.platform.ide.menu.IdeJMenuBar
import com.intellij.platform.ide.menu.collectGlobalMenu
import com.intellij.platform.ide.menu.createIdeMainMenuActionGroup
import com.intellij.ui.ComponentUtil
import com.intellij.ui.popup.PopupFactoryImpl
@@ -96,9 +95,6 @@ class MainMenuButton(coroutineScope: CoroutineScope) {
uninstall()
}
}
collectGlobalMenu(coroutineScope) { globalMenuPresent ->
button.isVisible = !globalMenuPresent
}
}
private fun initShortcutsChangeConnection() {

View File

@@ -18,7 +18,6 @@ import com.intellij.openapi.wm.impl.customFrameDecorations.header.titleLabel.Sim
import com.intellij.openapi.wm.impl.headertoolbar.MainToolbar
import com.intellij.openapi.wm.impl.headertoolbar.computeMainActionGroups
import com.intellij.platform.ide.menu.IdeJMenuBar
import com.intellij.platform.ide.menu.collectGlobalMenu
import com.intellij.platform.util.coroutines.childScope
import com.intellij.ui.ScreenUtil
import com.intellij.ui.WindowMoveListener
@@ -156,11 +155,6 @@ internal class ToolbarFrameHeader(private val coroutineScope: CoroutineScope,
}
}
}
collectGlobalMenu(coroutineScope) { globalMenuPresent ->
ideMenuBar.isVisible = !globalMenuPresent
// Repaint gradient
repaint()
}
}
override fun updateSize() {

View File

@@ -1,82 +0,0 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.platform.ide.menu
import com.intellij.openapi.actionSystem.ActionGroup
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.asContextElement
import com.intellij.openapi.util.Disposer
import com.intellij.util.concurrency.ThreadingAssertions
import com.intellij.util.concurrency.annotations.RequiresEdt
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.job
import kotlinx.coroutines.launch
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import java.util.function.Consumer
import javax.swing.JFrame
internal class LinuxIdeMenuBar(coroutineScope: CoroutineScope, frame: JFrame, customMenuGroup: ActionGroup?)
: IdeJMenuBar(coroutineScope, frame, customMenuGroup) {
companion object {
fun doBindAppMenuOfParent(frame: JFrame, parentFrame: JFrame) {
val globalMenu = (parentFrame.jMenuBar as? LinuxIdeMenuBar)?.globalMenu ?: return
if (GlobalMenuLinux.isPresented()) {
// all children of IdeFrame mustn't show swing-menubar
frame.jMenuBar?.isVisible = false
}
frame.addWindowListener(object : WindowAdapter() {
override fun windowClosing(e: WindowEvent?) {
globalMenu.unbindWindow(frame)
}
override fun windowOpened(e: WindowEvent?) {
globalMenu.bindNewWindow(frame)
}
})
}
}
private var globalMenu: GlobalMenuLinux? = null
override val isDarkMenu: Boolean
get() = globalMenu != null
override fun updateGlobalMenuRoots() {
super.updateGlobalMenuRoots()
globalMenu?.setRoots(rootMenuItems)
}
override fun doInstallAppMenuIfNeeded(frame: JFrame) {
if (globalMenu != null || !GlobalMenuLinux.isAvailable()) {
return
}
val globalMenuLinux = GlobalMenuLinux.create(frame)
globalMenu = globalMenuLinux
coroutineScope.coroutineContext.job.invokeOnCompletion {
Disposer.dispose(globalMenuLinux)
}
updateMenuActions(forceRebuild = true)
}
override fun onToggleFullScreen(isFullScreen: Boolean) {
globalMenu?.toggle(!isFullScreen)
}
}
@RequiresEdt
fun collectGlobalMenu(scope: CoroutineScope, globalMenuListener: Consumer<Boolean>) {
ThreadingAssertions.assertEventDispatchThread()
if (GlobalMenuLinux.isAvailable()) {
scope.launch(Dispatchers.EDT + ModalityState.any().asContextElement()) {
GlobalMenuLinux.isPresentedMutable.collect {
globalMenuListener.accept(it)
}
}
}
}

View File

@@ -1437,7 +1437,6 @@
<actionConfigurationCustomizer implementation="com.intellij.platform.ide.menu.IdeMainMenuActionCustomizer"/>
<actionConfigurationCustomizer implementation="com.intellij.platform.ide.menu.GlobalMenuLinux$MyActionTuner"/>
<titleInfoProvider implementation="com.intellij.openapi.wm.impl.simpleTitleParts.ProductTitleInfoProvider"/>
<titleInfoProvider implementation="com.intellij.openapi.wm.impl.simpleTitleParts.ProductVersionTitleInfoProvider"/>