Merge pull request #79 from Green-Sky/patch-1
input using 'alt gr' not working on linux
diff --git a/.gitignore b/.gitignore
index 259148f..0da26e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,4 @@
*.exe
*.out
*.app
+TextEditor.cpp.bak
diff --git a/TextEditor.cpp b/TextEditor.cpp
index 1f03e9c..0266ecd 100644
--- a/TextEditor.cpp
+++ b/TextEditor.cpp
@@ -43,6 +43,9 @@
, mSelectionMode(SelectionMode::Normal)
, mCheckComments(true)
, mLastClick(-1.0f)
+ , mHandleKeyboardInputs(true)
+ , mHandleMouseInputs(true)
+ , mIgnoreImGuiChild(false)
{
SetPalette(GetDarkPalette());
SetLanguageDefinition(LanguageDefinition::HLSL());
@@ -461,7 +464,7 @@
if (ImGui::IsWindowFocused())
{
- if (ImGui::IsWindowHovered())
+ if (ImGui::IsWindowHovered() && !ImGui::IsAnyItemHovered() && !ImGui::IsAnyItemFocused())
ImGui::SetMouseCursor(ImGuiMouseCursor_TextInput);
//ImGui::CaptureKeyboardFromApp(true);
@@ -836,16 +839,22 @@
ImGui::PushStyleColor(ImGuiCol_ChildWindowBg, ImGui::ColorConvertU32ToFloat4(mPalette[(int)PaletteIndex::Background]));
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 0.0f));
- ImGui::BeginChild(aTitle, aSize, aBorder, ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_AlwaysHorizontalScrollbar | ImGuiWindowFlags_NoMove);
- ImGui::PushAllowKeyboardFocus(true);
+ if( !mIgnoreImGuiChild)
+ ImGui::BeginChild(aTitle, aSize, aBorder, ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_AlwaysHorizontalScrollbar | ImGuiWindowFlags_NoMove);
+
+ if (mHandleKeyboardInputs) {
+ HandleKeyboardInputs();
+ ImGui::PushAllowKeyboardFocus(true);
+ }
- HandleKeyboardInputs();
- HandleMouseInputs();
+ if( mHandleMouseInputs) HandleMouseInputs();
+
ColorizeInternal();
Render();
- ImGui::PopAllowKeyboardFocus();
- ImGui::EndChild();
+ if (mHandleKeyboardInputs) ImGui::PopAllowKeyboardFocus();
+
+ if( !mIgnoreImGuiChild) ImGui::EndChild();
ImGui::PopStyleVar();
ImGui::PopStyleColor();
@@ -935,6 +944,9 @@
end.mColumn = (int)mLines[end.mLine].size();
}
+ if (end.mColumn >= (int)mLines[end.mLine].size())
+ end.mColumn = (int)mLines[end.mLine].size() - 1;
+
u.mRemovedStart = start;
u.mRemovedEnd = end;
u.mRemoved = GetText(start, end);
@@ -978,6 +990,8 @@
if (modified)
{
+ assert(mLines.size() > start.mLine && mLines[start.mLine].size() > start.mColumn);
+ assert(mLines.size() > end.mLine && mLines[end.mLine].size() > end.mColumn);
u.mAddedStart = start;
u.mAddedEnd = end;
u.mAdded = GetText(start, end);
@@ -1949,7 +1963,6 @@
}
}
mCheckComments = false;
- return;
}
if (mColorRangeMin < mColorRangeMax)
diff --git a/TextEditor.h b/TextEditor.h
index 66df7eb..cfc68d5 100644
--- a/TextEditor.h
+++ b/TextEditor.h
@@ -206,6 +206,10 @@
Coordinates GetCursorPosition() const { return GetActualCursorCoordinates(); }
void SetCursorPosition(const Coordinates& aPosition);
+ void SetHandleMouseInputs (bool aValue){ mHandleMouseInputs = aValue;}
+ void SetHandleKeyboardInputs (bool aValue){ mHandleKeyboardInputs = aValue;}
+ void SetImGuiChildIgnored (bool aValue){ mIgnoreImGuiChild = aValue;}
+
void InsertText(const std::string& aValue);
void InsertText(const char* aValue);
@@ -335,6 +339,9 @@
bool mCursorPositionChanged;
int mColorRangeMin, mColorRangeMax;
SelectionMode mSelectionMode;
+ bool mHandleKeyboardInputs;
+ bool mHandleMouseInputs;
+ bool mIgnoreImGuiChild;
Palette mPaletteBase;
Palette mPalette;