1
0
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:
David Capello 2014-03-21 23:29:01 -03:00
parent 0caf41c5fd
commit f3bfae7ad5
3 changed files with 54 additions and 23 deletions

@ -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;