Merge branch 'master' into vgsound_emu_update
This commit is contained in:
commit
85465633f2
59 changed files with 1078 additions and 223 deletions
2
extern/imgui_patched/imgui.cpp
vendored
2
extern/imgui_patched/imgui.cpp
vendored
|
|
@ -1818,7 +1818,7 @@ ImGuiID ImHashStr(const char* data_p, size_t data_size, ImU32 seed)
|
|||
|
||||
ImFileHandle ImFileOpen(const char* filename, const char* mode)
|
||||
{
|
||||
#if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS) && !defined(__CYGWIN__) && !defined(__GNUC__)
|
||||
#if defined(_WIN32)
|
||||
// We need a fopen() wrapper because MSVC/Windows fopen doesn't handle UTF-8 filenames.
|
||||
// Previously we used ImTextCountCharsFromUtf8/ImTextStrFromUtf8 here but we now need to support ImWchar16 and ImWchar32!
|
||||
const int filename_wsize = ::MultiByteToWideChar(CP_UTF8, 0, filename, -1, NULL, 0);
|
||||
|
|
|
|||
4
extern/imgui_patched/imgui.h
vendored
4
extern/imgui_patched/imgui.h
vendored
|
|
@ -1042,7 +1042,7 @@ enum ImGuiInputTextFlags_
|
|||
ImGuiInputTextFlags_AlwaysOverwrite = 1 << 13, // Overwrite mode
|
||||
ImGuiInputTextFlags_ReadOnly = 1 << 14, // Read-only mode
|
||||
ImGuiInputTextFlags_Password = 1 << 15, // Password mode, display all characters as '*'
|
||||
ImGuiInputTextFlags_NoUndoRedo = 1 << 16, // Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID().
|
||||
ImGuiInputTextFlags_UndoRedo = 1 << 16, // Enable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID().
|
||||
ImGuiInputTextFlags_CharsScientific = 1 << 17, // Allow 0123456789.+-*/eE (Scientific notation input)
|
||||
ImGuiInputTextFlags_CallbackResize = 1 << 18, // Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this)
|
||||
ImGuiInputTextFlags_CallbackEdit = 1 << 19 // Callback on any edit (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active)
|
||||
|
|
@ -1220,6 +1220,8 @@ enum ImGuiTableFlags_
|
|||
// Sorting
|
||||
ImGuiTableFlags_SortMulti = 1 << 26, // Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1).
|
||||
ImGuiTableFlags_SortTristate = 1 << 27, // Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
|
||||
// tildearrow
|
||||
ImGuiTableFlags_NoBordersInFrozenArea = 1 << 28, // Disable vertical borders in frozen area.
|
||||
|
||||
// [Internal] Combinations and masks
|
||||
ImGuiTableFlags_SizingMask_ = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame
|
||||
|
|
|
|||
2
extern/imgui_patched/imgui_tables.cpp
vendored
2
extern/imgui_patched/imgui_tables.cpp
vendored
|
|
@ -2532,7 +2532,7 @@ void ImGui::TableDrawBorders(ImGuiTable* table)
|
|||
// Draw inner border and resizing feedback
|
||||
ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table->InstanceCurrent);
|
||||
const float border_size = TABLE_BORDER_SIZE;
|
||||
const float draw_y1 = table->InnerRect.Min.y;
|
||||
const float draw_y1 = table->InnerRect.Min.y + ((table->Flags & ImGuiTableFlags_NoBordersInFrozenArea)?table_instance->LastFirstRowHeight:0.0f);
|
||||
const float draw_y2_body = table->InnerRect.Max.y;
|
||||
const float draw_y2_head = table->IsUsingHeaders ? ImMin(table->InnerRect.Max.y, (table->FreezeRowsCount >= 1 ? table->InnerRect.Min.y : table->WorkRect.Min.y) + table_instance->LastFirstRowHeight) : draw_y1;
|
||||
if (table->Flags & ImGuiTableFlags_BordersInnerV)
|
||||
|
|
|
|||
14
extern/imgui_patched/imgui_widgets.cpp
vendored
14
extern/imgui_patched/imgui_widgets.cpp
vendored
|
|
@ -3713,7 +3713,12 @@ static bool STB_TEXTEDIT_INSERTCHARS(ImGuiInputTextState* obj, int pos, const Im
|
|||
{
|
||||
const bool is_resizable = (obj->Flags & ImGuiInputTextFlags_CallbackResize) != 0;
|
||||
const int text_len = obj->CurLenW;
|
||||
IM_ASSERT(pos <= text_len);
|
||||
if (pos > text_len) {
|
||||
printf("failing STB_TEXTEDIT_INSERTCHARS assertion! oh man...\n");
|
||||
obj->Edited = true; // ???
|
||||
obj->ClearText();
|
||||
return false;
|
||||
}
|
||||
|
||||
const int new_text_len_utf8 = ImTextCountUtf8BytesFromStr(new_text, new_text + new_text_len);
|
||||
if (!is_resizable && (new_text_len_utf8 + obj->CurLenA + 1 > obj->BufCapacityA))
|
||||
|
|
@ -3776,8 +3781,11 @@ static void stb_textedit_replace(ImGuiInputTextState* str, STB_TexteditState* st
|
|||
state->cursor = text_len;
|
||||
state->has_preferred_x = 0;
|
||||
return;
|
||||
} else {
|
||||
state->cursor = 0;
|
||||
printf("STB_TEXTEDIT_INSERTCHARS fail!\n");
|
||||
}
|
||||
IM_ASSERT(0); // Failed to insert character, normally shouldn't happen because of how we currently use stb_textedit_replace()
|
||||
//IM_ASSERT(0); // Failed to insert character, normally shouldn't happen because of how we currently use stb_textedit_replace()
|
||||
}
|
||||
|
||||
} // namespace ImStb
|
||||
|
|
@ -3962,7 +3970,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|||
const bool is_multiline = (flags & ImGuiInputTextFlags_Multiline) != 0;
|
||||
const bool is_readonly = (flags & ImGuiInputTextFlags_ReadOnly) != 0;
|
||||
const bool is_password = (flags & ImGuiInputTextFlags_Password) != 0;
|
||||
const bool is_undoable = (flags & ImGuiInputTextFlags_NoUndoRedo) == 0;
|
||||
const bool is_undoable = (flags & ImGuiInputTextFlags_UndoRedo) != 0;
|
||||
const bool is_resizable = (flags & ImGuiInputTextFlags_CallbackResize) != 0;
|
||||
if (is_resizable)
|
||||
IM_ASSERT(callback != NULL); // Must provide a callback if you set the ImGuiInputTextFlags_CallbackResize flag!
|
||||
|
|
|
|||
33
extern/imgui_patched/imstb_textedit.h
vendored
33
extern/imgui_patched/imstb_textedit.h
vendored
|
|
@ -717,6 +717,9 @@ static int stb_textedit_paste_internal(STB_TEXTEDIT_STRING *str, STB_TexteditSta
|
|||
state->cursor += len;
|
||||
state->has_preferred_x = 0;
|
||||
return 1;
|
||||
} else {
|
||||
printf("stb_textedit_paste_internal failed.\n");
|
||||
state->cursor=0;
|
||||
}
|
||||
// note: paste failure will leave deleted selection, may be restored with an undo (see https://github.com/nothings/stb/issues/734 for details)
|
||||
return 0;
|
||||
|
|
@ -746,6 +749,9 @@ retry:
|
|||
if (STB_TEXTEDIT_INSERTCHARS(str, state->cursor, &ch, 1)) {
|
||||
++state->cursor;
|
||||
state->has_preferred_x = 0;
|
||||
} else {
|
||||
printf("key failed: first section.\n");
|
||||
state->cursor=0;
|
||||
}
|
||||
} else {
|
||||
stb_textedit_delete_selection(str,state); // implicitly clamps
|
||||
|
|
@ -753,6 +759,9 @@ retry:
|
|||
stb_text_makeundo_insert(state, state->cursor, 1);
|
||||
++state->cursor;
|
||||
state->has_preferred_x = 0;
|
||||
} else {
|
||||
printf("key failed: second section.\n");
|
||||
state->cursor=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1275,14 +1284,22 @@ static void stb_text_undo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
|
|||
STB_TEXTEDIT_DELETECHARS(str, u.where, u.delete_length);
|
||||
}
|
||||
|
||||
bool steFailed=false;
|
||||
|
||||
// check type of recorded action:
|
||||
if (u.insert_length) {
|
||||
// easy case: was a deletion, so we need to insert n characters
|
||||
STB_TEXTEDIT_INSERTCHARS(str, u.where, &s->undo_char[u.char_storage], u.insert_length);
|
||||
if (!STB_TEXTEDIT_INSERTCHARS(str, u.where, &s->undo_char[u.char_storage], u.insert_length)) {
|
||||
printf("undo u.insert_length failed\n");
|
||||
state->cursor=0;
|
||||
steFailed=true;
|
||||
}
|
||||
s->undo_char_point -= u.insert_length;
|
||||
}
|
||||
|
||||
state->cursor = u.where + u.insert_length;
|
||||
if (!steFailed) {
|
||||
state->cursor = u.where + u.insert_length;
|
||||
}
|
||||
|
||||
s->undo_point--;
|
||||
s->redo_point--;
|
||||
|
|
@ -1327,13 +1344,21 @@ static void stb_text_redo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
|
|||
STB_TEXTEDIT_DELETECHARS(str, r.where, r.delete_length);
|
||||
}
|
||||
|
||||
bool steFailed=false;
|
||||
|
||||
if (r.insert_length) {
|
||||
// easy case: need to insert n characters
|
||||
STB_TEXTEDIT_INSERTCHARS(str, r.where, &s->undo_char[r.char_storage], r.insert_length);
|
||||
if (!STB_TEXTEDIT_INSERTCHARS(str, r.where, &s->undo_char[r.char_storage], r.insert_length)) {
|
||||
printf("redo insert char failed\n");
|
||||
state->cursor=0;
|
||||
steFailed=true;
|
||||
}
|
||||
s->redo_char_point += r.insert_length;
|
||||
}
|
||||
|
||||
state->cursor = r.where + r.insert_length;
|
||||
if (!steFailed) {
|
||||
state->cursor = r.where + r.insert_length;
|
||||
}
|
||||
|
||||
s->undo_point++;
|
||||
s->redo_point++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue