mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-22 10:20:53 +00:00
Fix issue 353: don't show context bar when a new view is activated
Now we have three modes: normal mode (everything is visible), the first intermediate mode (context bar+sprite editor+timeline), and advanced mode (sprite editor only).
This commit is contained in:
parent
0caf41c5fd
commit
f3bfae7ad5
src/app
@ -55,10 +55,24 @@ void AdvancedModeCommand::onExecute(Context* context)
|
||||
{
|
||||
// Switch advanced mode.
|
||||
MainWindow* mainWindow = App::instance()->getMainWindow();
|
||||
bool advancedMode = !mainWindow->isAdvancedMode();
|
||||
mainWindow->setAdvancedMode(advancedMode);
|
||||
MainWindow::Mode oldMode = mainWindow->getMode();
|
||||
MainWindow::Mode newMode = oldMode;
|
||||
|
||||
if (advancedMode &&
|
||||
switch (oldMode) {
|
||||
case MainWindow::NormalMode:
|
||||
newMode = MainWindow::ContextBarAndTimelineMode;
|
||||
break;
|
||||
case MainWindow::ContextBarAndTimelineMode:
|
||||
newMode = MainWindow::EditorOnlyMode;
|
||||
break;
|
||||
case MainWindow::EditorOnlyMode:
|
||||
newMode = MainWindow::NormalMode;
|
||||
break;
|
||||
}
|
||||
|
||||
mainWindow->setMode(newMode);
|
||||
|
||||
if (oldMode == MainWindow::NormalMode &&
|
||||
get_config_bool("AdvancedMode", "Warning", true)) {
|
||||
Accelerator* accel = get_accel_to_execute_command(short_name());
|
||||
if (accel != NULL) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Aseprite
|
||||
* Copyright (C) 2001-2013 David Capello
|
||||
* Copyright (C) 2001-2014 David Capello
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -56,7 +56,7 @@ MainWindow::MainWindow()
|
||||
: Window(DesktopWindow)
|
||||
, m_lastSplitterPos(0.0)
|
||||
, m_lastTimelineSplitterPos(75.0)
|
||||
, m_advancedMode(false)
|
||||
, m_mode(NormalMode)
|
||||
, m_startView(NULL)
|
||||
{
|
||||
setId("main_window");
|
||||
@ -146,27 +146,35 @@ void MainWindow::reloadMenus()
|
||||
invalidate();
|
||||
}
|
||||
|
||||
void MainWindow::setAdvancedMode(bool advanced)
|
||||
void MainWindow::setMode(Mode mode)
|
||||
{
|
||||
// Check if we already are in the given mode.
|
||||
if (m_advancedMode == advanced)
|
||||
if (m_mode == mode)
|
||||
return;
|
||||
|
||||
m_advancedMode = advanced;
|
||||
|
||||
if (m_advancedMode) {
|
||||
if (mode == NormalMode) {
|
||||
if (m_colorBarSplitter->getPosition() == 0.0)
|
||||
m_colorBarSplitter->setPosition(m_lastSplitterPos);
|
||||
}
|
||||
// If current mode is "normal", we save the splitter position of the
|
||||
// color bar in "m_lastSplitterPos" before we hide it.
|
||||
else if (m_mode == NormalMode) {
|
||||
m_lastSplitterPos = m_colorBarSplitter->getPosition();
|
||||
m_colorBarSplitter->setPosition(0.0);
|
||||
}
|
||||
else if (m_colorBarSplitter->getPosition() == 0.0)
|
||||
m_colorBarSplitter->setPosition(m_lastSplitterPos);
|
||||
|
||||
m_menuBar->setVisible(!advanced);
|
||||
m_tabsBar->setVisible(!advanced);
|
||||
m_toolBar->setVisible(!advanced);
|
||||
m_statusBar->setVisible(!advanced);
|
||||
m_contextBar->setVisible(!advanced);
|
||||
m_menuBar->setVisible(mode == NormalMode);
|
||||
m_tabsBar->setVisible(mode == NormalMode);
|
||||
m_toolBar->setVisible(mode == NormalMode);
|
||||
m_statusBar->setVisible(mode == NormalMode);
|
||||
m_contextBar->setVisible(
|
||||
mode == NormalMode ||
|
||||
mode == ContextBarAndTimelineMode);
|
||||
setTimelineVisibility(
|
||||
mode == NormalMode ||
|
||||
mode == ContextBarAndTimelineMode);
|
||||
|
||||
m_mode = mode;
|
||||
layout();
|
||||
}
|
||||
|
||||
@ -232,12 +240,15 @@ void MainWindow::onActiveViewChange()
|
||||
|
||||
m_contextBar->updateFromTool(UIContext::instance()
|
||||
->getSettings()->getCurrentTool());
|
||||
m_contextBar->setVisible(true);
|
||||
|
||||
if (m_mode != EditorOnlyMode)
|
||||
m_contextBar->setVisible(true);
|
||||
}
|
||||
else {
|
||||
UIContext::instance()->setActiveView(NULL);
|
||||
|
||||
m_contextBar->setVisible(false);
|
||||
if (m_mode != EditorOnlyMode)
|
||||
m_contextBar->setVisible(false);
|
||||
}
|
||||
layout();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Aseprite
|
||||
* Copyright (C) 2001-2013 David Capello
|
||||
* Copyright (C) 2001-2014 David Capello
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -41,6 +41,12 @@ namespace app {
|
||||
class MainWindow : public ui::Window
|
||||
, public TabsDelegate {
|
||||
public:
|
||||
enum Mode {
|
||||
NormalMode,
|
||||
ContextBarAndTimelineMode,
|
||||
EditorOnlyMode
|
||||
};
|
||||
|
||||
MainWindow();
|
||||
~MainWindow();
|
||||
|
||||
@ -54,8 +60,8 @@ namespace app {
|
||||
void start();
|
||||
void reloadMenus();
|
||||
|
||||
bool isAdvancedMode() const { return m_advancedMode; }
|
||||
void setAdvancedMode(bool advanced);
|
||||
Mode getMode() const { return m_mode; }
|
||||
void setMode(Mode mode);
|
||||
|
||||
bool getTimelineVisibility() const;
|
||||
void setTimelineVisibility(bool visible);
|
||||
@ -81,7 +87,7 @@ namespace app {
|
||||
Tabs* m_tabsBar;
|
||||
double m_lastSplitterPos;
|
||||
double m_lastTimelineSplitterPos;
|
||||
bool m_advancedMode;
|
||||
Mode m_mode;
|
||||
Timeline* m_timeline;
|
||||
Workspace* m_workspace;
|
||||
MiniEditorWindow* m_miniEditor;
|
||||
|
Loading…
x
Reference in New Issue
Block a user