mirror of https://github.com/ocornut/imgui
Misc tidying up (zero-clear structures, more unused default in ClipRetFullscreen, NavApplyItemToResult() coding style fix)
Zero-clearing more structures Remove arbitrary default ClipRetFullscreen value in ImDrawListSharedData. Nav extracted NavApplyItemToResult() function. Coding style fixes in OSX Backends.
This commit is contained in:
parent
046057cebb
commit
5f97809cab
|
@ -1,3 +1,6 @@
|
||||||
|
// Dear ImGui: standalone example application for OSX + Metal.
|
||||||
|
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
|
||||||
|
// Read online: https://github.com/ocornut/imgui/tree/master/docs
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@ -31,13 +34,15 @@
|
||||||
|
|
||||||
@implementation ViewController
|
@implementation ViewController
|
||||||
|
|
||||||
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil {
|
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil
|
||||||
|
{
|
||||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||||
|
|
||||||
_device = MTLCreateSystemDefaultDevice();
|
_device = MTLCreateSystemDefaultDevice();
|
||||||
_commandQueue = [_device newCommandQueue];
|
_commandQueue = [_device newCommandQueue];
|
||||||
|
|
||||||
if (!self.device) {
|
if (!self.device)
|
||||||
|
{
|
||||||
NSLog(@"Metal is not supported");
|
NSLog(@"Metal is not supported");
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -75,11 +80,13 @@
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (MTKView *)mtkView {
|
- (MTKView *)mtkView
|
||||||
|
{
|
||||||
return (MTKView *)self.view;
|
return (MTKView *)self.view;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)loadView {
|
- (void)loadView
|
||||||
|
{
|
||||||
self.view = [[MTKView alloc] initWithFrame:CGRectMake(0, 0, 1200, 720)];
|
self.view = [[MTKView alloc] initWithFrame:CGRectMake(0, 0, 1200, 720)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,14 +111,13 @@
|
||||||
// window, we'd want to be much more careful than just ingesting the complete event stream, though we
|
// window, we'd want to be much more careful than just ingesting the complete event stream, though we
|
||||||
// do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture.
|
// do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture.
|
||||||
NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel;
|
NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel;
|
||||||
[NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) {
|
[NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event)
|
||||||
|
{
|
||||||
BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view);
|
BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view);
|
||||||
if (event.type == NSEventTypeKeyDown && wantsCapture) {
|
if (event.type == NSEventTypeKeyDown && wantsCapture)
|
||||||
return nil;
|
return nil;
|
||||||
} else {
|
else
|
||||||
return event;
|
return event;
|
||||||
}
|
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
ImGui_ImplOSX_Init();
|
ImGui_ImplOSX_Init();
|
||||||
|
@ -174,15 +180,18 @@
|
||||||
// multitouch correctly at all. This causes the "cursor" to behave very erratically
|
// multitouch correctly at all. This causes the "cursor" to behave very erratically
|
||||||
// when there are multiple active touches. But for demo purposes, single-touch
|
// when there are multiple active touches. But for demo purposes, single-touch
|
||||||
// interaction actually works surprisingly well.
|
// interaction actually works surprisingly well.
|
||||||
- (void)updateIOWithTouchEvent:(UIEvent *)event {
|
- (void)updateIOWithTouchEvent:(UIEvent *)event
|
||||||
|
{
|
||||||
UITouch *anyTouch = event.allTouches.anyObject;
|
UITouch *anyTouch = event.allTouches.anyObject;
|
||||||
CGPoint touchLocation = [anyTouch locationInView:self.view];
|
CGPoint touchLocation = [anyTouch locationInView:self.view];
|
||||||
ImGuiIO &io = ImGui::GetIO();
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
io.MousePos = ImVec2(touchLocation.x, touchLocation.y);
|
io.MousePos = ImVec2(touchLocation.x, touchLocation.y);
|
||||||
|
|
||||||
BOOL hasActiveTouch = NO;
|
BOOL hasActiveTouch = NO;
|
||||||
for (UITouch *touch in event.allTouches) {
|
for (UITouch *touch in event.allTouches)
|
||||||
if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled) {
|
{
|
||||||
|
if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled)
|
||||||
|
{
|
||||||
hasActiveTouch = YES;
|
hasActiveTouch = YES;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -190,19 +199,23 @@
|
||||||
io.MouseDown[0] = hasActiveTouch;
|
io.MouseDown[0] = hasActiveTouch;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
||||||
|
{
|
||||||
[self updateIOWithTouchEvent:event];
|
[self updateIOWithTouchEvent:event];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
||||||
|
{
|
||||||
[self updateIOWithTouchEvent:event];
|
[self updateIOWithTouchEvent:event];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
||||||
|
{
|
||||||
[self updateIOWithTouchEvent:event];
|
[self updateIOWithTouchEvent:event];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
||||||
|
{
|
||||||
[self updateIOWithTouchEvent:event];
|
[self updateIOWithTouchEvent:event];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,8 +301,8 @@
|
||||||
|
|
||||||
// Rendering
|
// Rendering
|
||||||
ImGui::Render();
|
ImGui::Render();
|
||||||
ImDrawData* drawData = ImGui::GetDrawData();
|
ImDrawData* draw_data = ImGui::GetDrawData();
|
||||||
ImGui_ImplMetal_RenderDrawData(drawData, commandBuffer, renderEncoder);
|
ImGui_ImplMetal_RenderDrawData(draw_data, commandBuffer, renderEncoder);
|
||||||
|
|
||||||
[renderEncoder popDebugGroup];
|
[renderEncoder popDebugGroup];
|
||||||
[renderEncoder endEncoding];
|
[renderEncoder endEncoding];
|
||||||
|
@ -316,8 +329,10 @@
|
||||||
|
|
||||||
@implementation AppDelegate
|
@implementation AppDelegate
|
||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init
|
||||||
if (self = [super init]) {
|
{
|
||||||
|
if (self = [super init])
|
||||||
|
{
|
||||||
NSViewController *rootViewController = [[ViewController alloc] initWithNibName:nil bundle:nil];
|
NSViewController *rootViewController = [[ViewController alloc] initWithNibName:nil bundle:nil];
|
||||||
self.window = [[NSWindow alloc] initWithContentRect:NSZeroRect
|
self.window = [[NSWindow alloc] initWithContentRect:NSZeroRect
|
||||||
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable
|
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable
|
||||||
|
@ -331,7 +346,8 @@
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
|
||||||
|
{
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,14 +379,17 @@
|
||||||
|
|
||||||
#if TARGET_OS_OSX
|
#if TARGET_OS_OSX
|
||||||
|
|
||||||
int main(int argc, const char * argv[]) {
|
int main(int argc, const char * argv[])
|
||||||
|
{
|
||||||
return NSApplicationMain(argc, argv);
|
return NSApplicationMain(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
int main(int argc, char * argv[]) {
|
int main(int argc, char * argv[])
|
||||||
@autoreleasepool {
|
{
|
||||||
|
@autoreleasepool
|
||||||
|
{
|
||||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,7 +139,7 @@
|
||||||
animationTimer = nil;
|
animationTimer = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Forward Mouse/Keyboard events to dear imgui OSX backend. It returns true when imgui is expecting to use the event.
|
// Forward Mouse/Keyboard events to Dear ImGui OSX backend.
|
||||||
-(void)keyUp:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
-(void)keyUp:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
||||||
-(void)keyDown:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
-(void)keyDown:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
||||||
-(void)flagsChanged:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
-(void)flagsChanged:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
|
||||||
|
|
24
imgui.cpp
24
imgui.cpp
|
@ -862,6 +862,7 @@ static float NavUpdatePageUpPageDown();
|
||||||
static inline void NavUpdateAnyRequestFlag();
|
static inline void NavUpdateAnyRequestFlag();
|
||||||
static void NavEndFrame();
|
static void NavEndFrame();
|
||||||
static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand);
|
static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand);
|
||||||
|
static void NavApplyItemToResult(ImGuiNavMoveResult* result, ImGuiWindow* window, ImGuiID id, const ImRect& nav_bb_rel);
|
||||||
static void NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, ImGuiID id);
|
static void NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, ImGuiID id);
|
||||||
static ImVec2 NavCalcPreferredRefPos();
|
static ImVec2 NavCalcPreferredRefPos();
|
||||||
static void NavSaveLastChildNavWindowIntoParent(ImGuiWindow* nav_window);
|
static void NavSaveLastChildNavWindowIntoParent(ImGuiWindow* nav_window);
|
||||||
|
@ -8377,6 +8378,14 @@ static bool ImGui::NavScoreItem(ImGuiNavMoveResult* result, ImRect cand)
|
||||||
return new_best;
|
return new_best;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ImGui::NavApplyItemToResult(ImGuiNavMoveResult* result, ImGuiWindow* window, ImGuiID id, const ImRect& nav_bb_rel)
|
||||||
|
{
|
||||||
|
result->Window = window;
|
||||||
|
result->ID = id;
|
||||||
|
result->FocusScopeId = window->DC.NavFocusScopeIdCurrent;
|
||||||
|
result->RectRel = nav_bb_rel;
|
||||||
|
}
|
||||||
|
|
||||||
// We get there when either NavId == id, or when g.NavAnyRequest is set (which is updated by NavUpdateAnyRequestFlag above)
|
// We get there when either NavId == id, or when g.NavAnyRequest is set (which is updated by NavUpdateAnyRequestFlag above)
|
||||||
static void ImGui::NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, const ImGuiID id)
|
static void ImGui::NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, const ImGuiID id)
|
||||||
{
|
{
|
||||||
|
@ -8417,25 +8426,14 @@ static void ImGui::NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, con
|
||||||
bool new_best = g.NavMoveRequest && NavScoreItem(result, nav_bb);
|
bool new_best = g.NavMoveRequest && NavScoreItem(result, nav_bb);
|
||||||
#endif
|
#endif
|
||||||
if (new_best)
|
if (new_best)
|
||||||
{
|
NavApplyItemToResult(result, window, id, nav_bb_rel);
|
||||||
result->Window = window;
|
|
||||||
result->ID = id;
|
|
||||||
result->FocusScopeId = window->DC.NavFocusScopeIdCurrent;
|
|
||||||
result->RectRel = nav_bb_rel;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Features like PageUp/PageDown need to maintain a separate score for the visible set of items.
|
// Features like PageUp/PageDown need to maintain a separate score for the visible set of items.
|
||||||
const float VISIBLE_RATIO = 0.70f;
|
const float VISIBLE_RATIO = 0.70f;
|
||||||
if ((g.NavMoveRequestFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb))
|
if ((g.NavMoveRequestFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb))
|
||||||
if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO)
|
if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO)
|
||||||
if (NavScoreItem(&g.NavMoveResultLocalVisibleSet, nav_bb))
|
if (NavScoreItem(&g.NavMoveResultLocalVisibleSet, nav_bb))
|
||||||
{
|
NavApplyItemToResult(&g.NavMoveResultLocalVisibleSet, window, id, nav_bb_rel);
|
||||||
result = &g.NavMoveResultLocalVisibleSet;
|
|
||||||
result->Window = window;
|
|
||||||
result->ID = id;
|
|
||||||
result->FocusScopeId = window->DC.NavFocusScopeIdCurrent;
|
|
||||||
result->RectRel = nav_bb_rel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update window-relative bounding box of navigated item
|
// Update window-relative bounding box of navigated item
|
||||||
|
|
|
@ -344,21 +344,12 @@ void ImGui::StyleColorsLight(ImGuiStyle* dst)
|
||||||
|
|
||||||
ImDrawListSharedData::ImDrawListSharedData()
|
ImDrawListSharedData::ImDrawListSharedData()
|
||||||
{
|
{
|
||||||
Font = NULL;
|
memset(this, 0, sizeof(*this));
|
||||||
FontSize = 0.0f;
|
|
||||||
CurveTessellationTol = 0.0f;
|
|
||||||
CircleSegmentMaxError = 0.0f;
|
|
||||||
ClipRectFullscreen = ImVec4(-8192.0f, -8192.0f, +8192.0f, +8192.0f);
|
|
||||||
InitialFlags = ImDrawListFlags_None;
|
|
||||||
|
|
||||||
// Lookup tables
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(ArcFastVtx); i++)
|
for (int i = 0; i < IM_ARRAYSIZE(ArcFastVtx); i++)
|
||||||
{
|
{
|
||||||
const float a = ((float)i * 2 * IM_PI) / (float)IM_ARRAYSIZE(ArcFastVtx);
|
const float a = ((float)i * 2 * IM_PI) / (float)IM_ARRAYSIZE(ArcFastVtx);
|
||||||
ArcFastVtx[i] = ImVec2(ImCos(a), ImSin(a));
|
ArcFastVtx[i] = ImVec2(ImCos(a), ImSin(a));
|
||||||
}
|
}
|
||||||
memset(CircleSegmentCounts, 0, sizeof(CircleSegmentCounts)); // This will be set by SetCircleSegmentMaxError()
|
|
||||||
TexUvLines = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawListSharedData::SetCircleSegmentMaxError(float max_error)
|
void ImDrawListSharedData::SetCircleSegmentMaxError(float max_error)
|
||||||
|
|
|
@ -844,7 +844,7 @@ struct IMGUI_API ImGuiMenuColumns
|
||||||
float Width, NextWidth;
|
float Width, NextWidth;
|
||||||
float Pos[3], NextWidths[3];
|
float Pos[3], NextWidths[3];
|
||||||
|
|
||||||
ImGuiMenuColumns();
|
ImGuiMenuColumns() { memset(this, 0, sizeof(*this)); }
|
||||||
void Update(int count, float spacing, bool clear);
|
void Update(int count, float spacing, bool clear);
|
||||||
float DeclColumns(float w0, float w1, float w2);
|
float DeclColumns(float w0, float w1, float w2);
|
||||||
float CalcExtraSpace(float avail_w) const;
|
float CalcExtraSpace(float avail_w) const;
|
||||||
|
@ -897,7 +897,7 @@ struct ImGuiPopupData
|
||||||
ImVec2 OpenPopupPos; // Set on OpenPopup(), preferred popup position (typically == OpenMousePos when using mouse)
|
ImVec2 OpenPopupPos; // Set on OpenPopup(), preferred popup position (typically == OpenMousePos when using mouse)
|
||||||
ImVec2 OpenMousePos; // Set on OpenPopup(), copy of mouse position at the time of opening popup
|
ImVec2 OpenMousePos; // Set on OpenPopup(), copy of mouse position at the time of opening popup
|
||||||
|
|
||||||
ImGuiPopupData() { PopupId = 0; Window = SourceWindow = NULL; OpenFrameCount = -1; OpenParentId = 0; }
|
ImGuiPopupData() { memset(this, 0, sizeof(*this)); OpenFrameCount = -1; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ImGuiNavMoveResult
|
struct ImGuiNavMoveResult
|
||||||
|
@ -1006,7 +1006,7 @@ struct ImGuiColumnData
|
||||||
ImGuiColumnsFlags Flags; // Not exposed
|
ImGuiColumnsFlags Flags; // Not exposed
|
||||||
ImRect ClipRect;
|
ImRect ClipRect;
|
||||||
|
|
||||||
ImGuiColumnData() { OffsetNorm = OffsetNormBeforeResize = 0.0f; Flags = ImGuiColumnsFlags_None; }
|
ImGuiColumnData() { memset(this, 0, sizeof(*this)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ImGuiColumns
|
struct ImGuiColumns
|
||||||
|
@ -1027,21 +1027,7 @@ struct ImGuiColumns
|
||||||
ImVector<ImGuiColumnData> Columns;
|
ImVector<ImGuiColumnData> Columns;
|
||||||
ImDrawListSplitter Splitter;
|
ImDrawListSplitter Splitter;
|
||||||
|
|
||||||
ImGuiColumns() { Clear(); }
|
ImGuiColumns() { memset(this, 0, sizeof(*this)); }
|
||||||
void Clear()
|
|
||||||
{
|
|
||||||
ID = 0;
|
|
||||||
Flags = ImGuiColumnsFlags_None;
|
|
||||||
IsFirstFrame = false;
|
|
||||||
IsBeingResized = false;
|
|
||||||
Current = 0;
|
|
||||||
Count = 1;
|
|
||||||
OffMinX = OffMaxX = 0.0f;
|
|
||||||
LineMinY = LineMaxY = 0.0f;
|
|
||||||
HostCursorPosY = 0.0f;
|
|
||||||
HostCursorMaxPosX = 0.0f;
|
|
||||||
Columns.clear();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -1083,7 +1069,7 @@ struct ImGuiWindowSettings
|
||||||
bool Collapsed;
|
bool Collapsed;
|
||||||
bool WantApply; // Set when loaded from .ini data (to enable merging/loading .ini data into an already running context)
|
bool WantApply; // Set when loaded from .ini data (to enable merging/loading .ini data into an already running context)
|
||||||
|
|
||||||
ImGuiWindowSettings() { ID = 0; Pos = Size = ImVec2ih(0, 0); Collapsed = WantApply = false; }
|
ImGuiWindowSettings() { memset(this, 0, sizeof(*this)); }
|
||||||
char* GetName() { return (char*)(this + 1); }
|
char* GetName() { return (char*)(this + 1); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6388,13 +6388,6 @@ void ImGui::Value(const char* prefix, float v, const char* float_format)
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
// Helpers for internal use
|
// Helpers for internal use
|
||||||
ImGuiMenuColumns::ImGuiMenuColumns()
|
|
||||||
{
|
|
||||||
Spacing = Width = NextWidth = 0.0f;
|
|
||||||
memset(Pos, 0, sizeof(Pos));
|
|
||||||
memset(NextWidths, 0, sizeof(NextWidths));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ImGuiMenuColumns::Update(int count, float spacing, bool clear)
|
void ImGuiMenuColumns::Update(int count, float spacing, bool clear)
|
||||||
{
|
{
|
||||||
IM_ASSERT(count == IM_ARRAYSIZE(Pos));
|
IM_ASSERT(count == IM_ARRAYSIZE(Pos));
|
||||||
|
|
Loading…
Reference in New Issue