diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index 0455c27d..993a9d90 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -45,15 +45,14 @@ TagEditor *myTagEditor = new TagEditor; const std::string TagEditor::PatternsFile = config_dir + "patterns.list"; std::deque TagEditor::Patterns; -const size_t TagEditor::MiddleColumnWidth = 26; size_t TagEditor::LeftColumnWidth; +size_t TagEditor::MiddleColumnWidth; size_t TagEditor::MiddleColumnStartX; size_t TagEditor::RightColumnWidth; size_t TagEditor::RightColumnStartX; -const size_t TagEditor::FParserDialogWidth = 30; -const size_t TagEditor::FParserDialogHeight = 6; - +size_t TagEditor::FParserDialogWidth; +size_t TagEditor::FParserDialogHeight; size_t TagEditor::FParserWidth; size_t TagEditor::FParserWidthOne; size_t TagEditor::FParserWidthTwo; @@ -143,11 +142,14 @@ void TagEditor::Init() void TagEditor::SetDimensions() { - LeftColumnWidth = COLS/2-MiddleColumnWidth/2; + MiddleColumnWidth = std::min(26, COLS-2); + LeftColumnWidth = (COLS-MiddleColumnWidth)/2; MiddleColumnStartX = LeftColumnWidth+1; RightColumnWidth = COLS-LeftColumnWidth-MiddleColumnWidth-2; RightColumnStartX = LeftColumnWidth+MiddleColumnWidth+2; + FParserDialogWidth = std::min(30, COLS); + FParserDialogHeight = std::min(size_t(6), MainHeight); FParserWidth = COLS*0.9; FParserHeight = std::min(size_t(LINES*0.8), MainHeight); FParserWidthOne = FParserWidth/2; @@ -162,6 +164,7 @@ void TagEditor::Resize() Dirs->Resize(LeftColumnWidth, MainHeight); TagTypes->Resize(MiddleColumnWidth, MainHeight); Tags->Resize(RightColumnWidth, MainHeight); + FParserDialog->Resize(FParserDialogWidth, FParserDialogHeight); FParser->Resize(FParserWidthOne, FParserHeight); FParserLegend->Resize(FParserWidthTwo, FParserHeight); FParserPreview->Resize(FParserWidthTwo, FParserHeight); @@ -176,6 +179,9 @@ void TagEditor::Resize() FParserLegend->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY); FParserPreview->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY); + if (MainHeight < 5 && (w == FParserDialog || w == FParser || w == FParserHelper)) // screen too low + w = TagTypes; // fall back to main columns + hasToBeResized = 0; } diff --git a/src/tag_editor.h b/src/tag_editor.h index c4442156..2e0a895b 100644 --- a/src/tag_editor.h +++ b/src/tag_editor.h @@ -111,14 +111,14 @@ class TagEditor : public Screen static const std::string PatternsFile; static std::deque Patterns; - static const size_t MiddleColumnWidth; + static size_t MiddleColumnWidth; static size_t LeftColumnWidth; static size_t MiddleColumnStartX; static size_t RightColumnWidth; static size_t RightColumnStartX; - static const size_t FParserDialogWidth; - static const size_t FParserDialogHeight; + static size_t FParserDialogWidth; + static size_t FParserDialogHeight; static size_t FParserWidth; static size_t FParserWidthOne; static size_t FParserWidthTwo;