mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-23 04:20:56 +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
@ -55,10 +55,24 @@ void AdvancedModeCommand::onExecute(Context* context)
|
|||||||
{
|
{
|
||||||
// Switch advanced mode.
|
// Switch advanced mode.
|
||||||
MainWindow* mainWindow = App::instance()->getMainWindow();
|
MainWindow* mainWindow = App::instance()->getMainWindow();
|
||||||
bool advancedMode = !mainWindow->isAdvancedMode();
|
MainWindow::Mode oldMode = mainWindow->getMode();
|
||||||
mainWindow->setAdvancedMode(advancedMode);
|
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)) {
|
get_config_bool("AdvancedMode", "Warning", true)) {
|
||||||
Accelerator* accel = get_accel_to_execute_command(short_name());
|
Accelerator* accel = get_accel_to_execute_command(short_name());
|
||||||
if (accel != NULL) {
|
if (accel != NULL) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Aseprite
|
/* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -56,7 +56,7 @@ MainWindow::MainWindow()
|
|||||||
: Window(DesktopWindow)
|
: Window(DesktopWindow)
|
||||||
, m_lastSplitterPos(0.0)
|
, m_lastSplitterPos(0.0)
|
||||||
, m_lastTimelineSplitterPos(75.0)
|
, m_lastTimelineSplitterPos(75.0)
|
||||||
, m_advancedMode(false)
|
, m_mode(NormalMode)
|
||||||
, m_startView(NULL)
|
, m_startView(NULL)
|
||||||
{
|
{
|
||||||
setId("main_window");
|
setId("main_window");
|
||||||
@ -146,27 +146,35 @@ void MainWindow::reloadMenus()
|
|||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setAdvancedMode(bool advanced)
|
void MainWindow::setMode(Mode mode)
|
||||||
{
|
{
|
||||||
// Check if we already are in the given mode.
|
// Check if we already are in the given mode.
|
||||||
if (m_advancedMode == advanced)
|
if (m_mode == mode)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_advancedMode = advanced;
|
if (mode == NormalMode) {
|
||||||
|
if (m_colorBarSplitter->getPosition() == 0.0)
|
||||||
if (m_advancedMode) {
|
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_lastSplitterPos = m_colorBarSplitter->getPosition();
|
||||||
m_colorBarSplitter->setPosition(0.0);
|
m_colorBarSplitter->setPosition(0.0);
|
||||||
}
|
}
|
||||||
else if (m_colorBarSplitter->getPosition() == 0.0)
|
|
||||||
m_colorBarSplitter->setPosition(m_lastSplitterPos);
|
|
||||||
|
|
||||||
m_menuBar->setVisible(!advanced);
|
m_menuBar->setVisible(mode == NormalMode);
|
||||||
m_tabsBar->setVisible(!advanced);
|
m_tabsBar->setVisible(mode == NormalMode);
|
||||||
m_toolBar->setVisible(!advanced);
|
m_toolBar->setVisible(mode == NormalMode);
|
||||||
m_statusBar->setVisible(!advanced);
|
m_statusBar->setVisible(mode == NormalMode);
|
||||||
m_contextBar->setVisible(!advanced);
|
m_contextBar->setVisible(
|
||||||
|
mode == NormalMode ||
|
||||||
|
mode == ContextBarAndTimelineMode);
|
||||||
|
setTimelineVisibility(
|
||||||
|
mode == NormalMode ||
|
||||||
|
mode == ContextBarAndTimelineMode);
|
||||||
|
|
||||||
|
m_mode = mode;
|
||||||
layout();
|
layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,12 +240,15 @@ void MainWindow::onActiveViewChange()
|
|||||||
|
|
||||||
m_contextBar->updateFromTool(UIContext::instance()
|
m_contextBar->updateFromTool(UIContext::instance()
|
||||||
->getSettings()->getCurrentTool());
|
->getSettings()->getCurrentTool());
|
||||||
m_contextBar->setVisible(true);
|
|
||||||
|
if (m_mode != EditorOnlyMode)
|
||||||
|
m_contextBar->setVisible(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
UIContext::instance()->setActiveView(NULL);
|
UIContext::instance()->setActiveView(NULL);
|
||||||
|
|
||||||
m_contextBar->setVisible(false);
|
if (m_mode != EditorOnlyMode)
|
||||||
|
m_contextBar->setVisible(false);
|
||||||
}
|
}
|
||||||
layout();
|
layout();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Aseprite
|
/* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -41,6 +41,12 @@ namespace app {
|
|||||||
class MainWindow : public ui::Window
|
class MainWindow : public ui::Window
|
||||||
, public TabsDelegate {
|
, public TabsDelegate {
|
||||||
public:
|
public:
|
||||||
|
enum Mode {
|
||||||
|
NormalMode,
|
||||||
|
ContextBarAndTimelineMode,
|
||||||
|
EditorOnlyMode
|
||||||
|
};
|
||||||
|
|
||||||
MainWindow();
|
MainWindow();
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
@ -54,8 +60,8 @@ namespace app {
|
|||||||
void start();
|
void start();
|
||||||
void reloadMenus();
|
void reloadMenus();
|
||||||
|
|
||||||
bool isAdvancedMode() const { return m_advancedMode; }
|
Mode getMode() const { return m_mode; }
|
||||||
void setAdvancedMode(bool advanced);
|
void setMode(Mode mode);
|
||||||
|
|
||||||
bool getTimelineVisibility() const;
|
bool getTimelineVisibility() const;
|
||||||
void setTimelineVisibility(bool visible);
|
void setTimelineVisibility(bool visible);
|
||||||
@ -81,7 +87,7 @@ namespace app {
|
|||||||
Tabs* m_tabsBar;
|
Tabs* m_tabsBar;
|
||||||
double m_lastSplitterPos;
|
double m_lastSplitterPos;
|
||||||
double m_lastTimelineSplitterPos;
|
double m_lastTimelineSplitterPos;
|
||||||
bool m_advancedMode;
|
Mode m_mode;
|
||||||
Timeline* m_timeline;
|
Timeline* m_timeline;
|
||||||
Workspace* m_workspace;
|
Workspace* m_workspace;
|
||||||
MiniEditorWindow* m_miniEditor;
|
MiniEditorWindow* m_miniEditor;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user