From 4f9767bd2a90fcdaeefe6d6e8f16aad362c347f3 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Wed, 11 Jul 2018 17:38:06 -0700 Subject: [PATCH] Toggle Desktop from context menu --- js/actionCreators/index.js | 1 + js/actionCreators/windows.js | 8 +++- js/actionTypes.js | 1 + .../MilkdropWindow/MilkdropContextMenu.js | 7 +++- js/components/MilkdropWindow/index.js | 38 ++++++++++++++----- js/reducers/windows.js | 12 ++++++ 6 files changed, 55 insertions(+), 12 deletions(-) diff --git a/js/actionCreators/index.js b/js/actionCreators/index.js index 52a7ba44..333a7ea4 100644 --- a/js/actionCreators/index.js +++ b/js/actionCreators/index.js @@ -6,6 +6,7 @@ export { togglePlaylistShadeMode, closeWindow, hideWindow, + showWindow, setWindowSize, toggleWindow, updateWindowPositions, diff --git a/js/actionCreators/windows.js b/js/actionCreators/windows.js index 34404221..13d4ad56 100644 --- a/js/actionCreators/windows.js +++ b/js/actionCreators/windows.js @@ -12,7 +12,8 @@ import { TOGGLE_WINDOW, CLOSE_WINDOW, TOGGLE_WINDOW_SHADE_MODE, - HIDE_WINDOW + HIDE_WINDOW, + SHOW_WINDOW } from "../actionTypes"; import { getPositionDiff } from "../resizeUtils"; @@ -86,6 +87,11 @@ export function closeWindow(windowId) { export function hideWindow(windowId) { return { type: HIDE_WINDOW, windowId }; } + +export function showWindow(windowId) { + return { type: SHOW_WINDOW, windowId }; +} + export function setWindowSize(windowId, size) { return { type: WINDOW_SIZE_CHANGED, windowId, size }; } diff --git a/js/actionTypes.js b/js/actionTypes.js index be56ccd4..8b880a6d 100644 --- a/js/actionTypes.js +++ b/js/actionTypes.js @@ -69,4 +69,5 @@ export const SET_Z_INDEX = "SET_Z_INDEX"; export const DISABLE_MARQUEE = "DISABLE_MARQUEE"; export const SET_DUMMY_VIZ_DATA = "SET_DUMMY_VIZ_DATA"; export const HIDE_WINDOW = "HIDE_WINDOW"; +export const SHOW_WINDOW = "SHOW_WINDOW"; export const LOADING = "LOADING"; diff --git a/js/components/MilkdropWindow/MilkdropContextMenu.js b/js/components/MilkdropWindow/MilkdropContextMenu.js index 159156c4..e16d2c9c 100644 --- a/js/components/MilkdropWindow/MilkdropContextMenu.js +++ b/js/components/MilkdropWindow/MilkdropContextMenu.js @@ -8,7 +8,12 @@ const MilkdropContextMenu = props => ( label="Fullscreen" hotkey="Alt+Enter" /> - +
diff --git a/js/components/MilkdropWindow/index.js b/js/components/MilkdropWindow/index.js index 9b4f5c4d..017b5fec 100644 --- a/js/components/MilkdropWindow/index.js +++ b/js/components/MilkdropWindow/index.js @@ -3,7 +3,7 @@ import { connect } from "react-redux"; import screenfull from "screenfull"; import ContextMenuWrapper from "../ContextMenuWrapper"; import GenWindow from "../GenWindow"; -import { hideWindow } from "../../actionCreators"; +import { hideWindow, showWindow } from "../../actionCreators"; import MilkdropContextMenu from "./MilkdropContextMenu"; import Desktop from "./Desktop"; @@ -27,7 +27,7 @@ class PresetsLoader extends React.Component { }; this._handleFullscreenChange = this._handleFullscreenChange.bind(this); this._handleRequestFullsceen = this._handleRequestFullsceen.bind(this); - this._enableDesktop = this._enableDesktop.bind(this); + this._toggleDesktop = this._toggleDesktop.bind(this); } isHidden() { @@ -60,9 +60,14 @@ class PresetsLoader extends React.Component { this.setState({ isFullscreen: screenfull.isFullscreen }); } - _enableDesktop() { - this.props.hideWindow(this.props.windowId); - this.setState({ desktop: true }); + _toggleDesktop() { + if (this.state.desktop) { + this.props.showWindow(this.props.windowId); + this.setState({ desktop: false }); + } else { + this.props.hideWindow(this.props.windowId); + this.setState({ desktop: true }); + } } _handleRequestFullsceen() { @@ -100,7 +105,21 @@ class PresetsLoader extends React.Component { return this._renderMilkdrop(size); } else if (this.state.desktop) { const size = { width: window.innerWidth, height: window.innerHeight }; - return {this._renderMilkdrop(size)}; + return ( + ( + + )} + > + {this._renderMilkdrop(size)} + + ); } return ( @@ -116,7 +135,8 @@ class PresetsLoader extends React.Component { )} > @@ -168,9 +188,7 @@ async function loadNonMinimalPresets() { } const mapStateToProps = () => ({}); -const mapDispatchProps = { - hideWindow -}; +const mapDispatchProps = { hideWindow, showWindow }; export default connect( mapStateToProps, diff --git a/js/reducers/windows.js b/js/reducers/windows.js index 6c480993..1a63ae93 100644 --- a/js/reducers/windows.js +++ b/js/reducers/windows.js @@ -4,6 +4,7 @@ import { TOGGLE_WINDOW, CLOSE_WINDOW, HIDE_WINDOW, + SHOW_WINDOW, ADD_GEN_WINDOW, UPDATE_WINDOW_POSITIONS, WINDOW_SIZE_CHANGED, @@ -109,6 +110,17 @@ const windows = (state = defaultWindowsState, action) => { } } }; + case SHOW_WINDOW: + return { + ...state, + genWindows: { + ...state.genWindows, + [action.windowId]: { + ...state.genWindows[action.windowId], + hidden: true + } + } + }; case ADD_GEN_WINDOW: return { ...state,