public virtual void SetFocus(ImGui source, Rect rect) { this.source = source; sourceRect = rect; contents.Rebuild(); owner?.Rebuild(); }
private void DeleteSelected() { AddEditHistory(EditHistoryEvent.Delete); var pos = Math.Min(selectionAnchor, caret); text = text.Remove(pos, Math.Abs(selectionAnchor - caret)); selectionAnchor = caret = pos; gui.Rebuild(); }
public static bool BuildSlider(this ImGui gui, float value, out float newValue, float width = 10f) { var sliderRect = gui.AllocateRect(width, 2f, RectAlignment.Full); var handleStart = (sliderRect.Width - 1f) * value; var handleRect = new Rect(sliderRect.X + handleStart, sliderRect.Y, 1f, sliderRect.Height); var update = false; newValue = value; switch (gui.action) { case ImGuiAction.Build: gui.DrawRectangle(handleRect, gui.IsMouseOverOrDown(sliderRect) ? SchemeColor.Background : SchemeColor.PureBackground, RectangleBorder.Thin); sliderRect.Y += (sliderRect.Height - 0.3f) / 2f; sliderRect.Height = 0.3f; gui.DrawRectangle(sliderRect, SchemeColor.Grey); break; case ImGuiAction.MouseMove: if (gui.IsMouseDown(sliderRect)) { update = true; } else { gui.ConsumeMouseOver(sliderRect, RenderingUtils.cursorHand); } break; case ImGuiAction.MouseDown: if (gui.IsMouseOver(sliderRect)) { gui.ConsumeMouseDown(sliderRect); update = true; } break; } if (!update) { return(false); } var positionX = (gui.mousePosition.X - sliderRect.X - 0.5f) / (sliderRect.Width - 1f); newValue = MathUtils.Clamp(positionX, 0f, 1f); gui.Rebuild(); return(true); }
private void BuildHeaderResizer(ImGui gui, DataColumn <TData> column, Rect rect) { switch (gui.action) { case ImGuiAction.Build: var center = rect.X + rect.Width * 0.5f; if (gui.IsMouseDown(rect, SDL.SDL_BUTTON_LEFT)) { var unclampedWidth = gui.mousePosition.X - rect.Center.X + column.width; var clampedWidth = MathUtils.Clamp(unclampedWidth, column.minWidth, column.maxWidth); center = center - column.width + clampedWidth; } var viewRect = new Rect(center - 0.1f, rect.Y, 0.2f, rect.Height); gui.DrawRectangle(viewRect, SchemeColor.GreyAlt); break; case ImGuiAction.MouseMove: gui.ConsumeMouseOver(rect, RenderingUtils.cursorHorizontalResize); if (gui.IsMouseDown(rect, SDL.SDL_BUTTON_LEFT)) { gui.Rebuild(); } break; case ImGuiAction.MouseDown: gui.ConsumeMouseDown(rect, cursor: RenderingUtils.cursorHorizontalResize); break; case ImGuiAction.MouseUp: if (gui.ConsumeMouseUp(rect, false)) { var unclampedWidth = gui.mousePosition.X - rect.Center.X + column.width; column.width = MathUtils.Clamp(unclampedWidth, column.minWidth, column.maxWidth); contentGui?.Rebuild(); } break; } }
internal virtual void WindowResize() { rootGui.Rebuild(); }