diff --git a/luigi.h b/luigi.h index 580c7b9..6da418c 100644 --- a/luigi.h +++ b/luigi.h @@ -1663,7 +1663,8 @@ int _UIButtonMessage(UIElement *element, UIMessage message, int di, void *dp) { : (pressed && hovered) ? ui.theme.buttonPressed : (pressed || hovered) ? ui.theme.buttonHovered : focused ? ui.theme.selected : ui.theme.buttonNormal; - uint32_t textColor = disabled ? ui.theme.textDisabled : focused ? ui.theme.textSelected : ui.theme.text; + uint32_t textColor = disabled ? ui.theme.textDisabled + : color == ui.theme.selected ? ui.theme.textSelected : ui.theme.text; UIDrawRectangle(painter, element->bounds, color, ui.theme.border, UI_RECT_1(isMenuItem ? 0 : 1)); @@ -1672,8 +1673,7 @@ int _UIButtonMessage(UIElement *element, UIMessage message, int di, void *dp) { UI_RECT_1I((int) (UI_SIZE_BUTTON_CHECKED_AREA * element->window->scale))), ui.theme.buttonPressed); } - UIRectangle bounds = UIRectangleAdd(element->bounds, - UI_RECT_2I((int) (UI_SIZE_MENU_ITEM_MARGIN * element->window->scale), 0)); + UIRectangle bounds = UIRectangleAdd(element->bounds, UI_RECT_2I((int) (UI_SIZE_MENU_ITEM_MARGIN * element->window->scale), 0)); if (isMenuItem) { if (button->labelBytes == -1) { diff --git a/windows.cpp b/windows.cpp index 54644b8..8266862 100644 --- a/windows.cpp +++ b/windows.cpp @@ -934,6 +934,23 @@ int WatchLoggerWindowMessage(UIElement *element, UIMessage message, int di, void return 0; } +void WatchLoggerTraceSelectFrame(UIElement *element, int index, WatchLogger *logger) { + if (index == -1) { + return; + } + + StackEntry *entry = &logger->entries[logger->selectedEntry].trace[index]; + char location[sizeof(entry->location)]; + strcpy(location, entry->location); + char *colon = strchr(location, ':'); + + if (colon) { + *colon = 0; + DisplaySetPosition(location, atoi(colon + 1), false); + UIElementRefresh(element); + } +} + int WatchLoggerTableMessage(UIElement *element, UIMessage message, int di, void *dp) { WatchLogger *logger = (WatchLogger *) element->cp; @@ -961,6 +978,7 @@ int WatchLoggerTableMessage(UIElement *element, UIMessage message, int di, void if (index != -1 && logger->selectedEntry != index) { logger->selectedEntry = index; logger->trace->itemCount = logger->entries[index].trace.Length(); + WatchLoggerTraceSelectFrame(&logger->trace->e, 0, logger); UITableResizeColumns(logger->trace); UIElementRefresh(&logger->trace->e); UIElementRefresh(element); @@ -986,6 +1004,9 @@ int WatchLoggerTraceMessage(UIElement *element, UIMessage message, int di, void } else if (m->column == 3) { return StringFormat(m->buffer, m->bufferBytes, "0x%lX", entry->address); } + } else if (message == UI_MSG_LEFT_DOWN || message == UI_MSG_MOUSE_DRAG) { + int index = UITableHitTest((UITable *) element, element->window->cursorX, element->window->cursorY); + WatchLoggerTraceSelectFrame(element, index, logger); } return 0; @@ -1007,6 +1028,10 @@ bool WatchGetAddress(Watch *watch) { } *end = 0; + + char *end2 = strchr(evaluateResult, '\n'); + if (end2) *end2 = 0; + return true; }