Skip to content

Commit 1c5ddbf

Browse files
committed
Merge remote-tracking branch 'origin/main' into sdl3
2 parents 6ede634 + c25a0db commit 1c5ddbf

3 files changed

Lines changed: 58 additions & 8 deletions

File tree

dear-imgui.cabal

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -345,21 +345,21 @@ library dear-imgui-generator
345345
template-haskell
346346
>= 2.15 && < 2.24
347347
, containers
348-
>= 0.6.2.1 && < 0.8
348+
>= 0.6.2.1 && < 1.0
349349
, directory
350-
>= 1.3 && < 1.4
350+
>= 1.3 && < 2
351351
, filepath
352-
>= 1.4 && < 1.6
352+
>= 1.4 && < 2
353353
, inline-c
354354
>= 0.9.0.0 && < 0.10
355355
, megaparsec
356-
>= 9.0 && < 9.8
356+
>= 9.0 && < 10
357357
, parser-combinators
358358
>= 1.2.0 && < 1.4
359359
, scientific
360360
>= 0.3.6.2 && < 0.4
361361
, text
362-
>= 1.2.4 && < 2.2
362+
>= 1.2.4 && < 3
363363
, th-lift
364364
>= 0.7 && < 0.9
365365
, transformers
@@ -438,17 +438,17 @@ executable vulkan
438438
build-depends:
439439
dear-imgui
440440
, bytestring
441-
>= 0.10.10.0 && < 0.13
441+
>= 0.10.10.0
442442
, containers
443-
>= 0.6.2.1 && < 0.7
443+
>= 0.6.2.1
444444
, logging-effect
445445
>= 1.3.12 && < 1.5
446446
, resourcet
447447
>= 1.2.4.2 && < 1.3
448448
, sdl2
449449
>= 2.5.3.0 && < 2.6
450450
, text
451-
>= 1.2.4 && < 2.2
451+
>= 1.2.4 && < 3
452452
, transformers
453453
>= 0.5.6 && < 0.7
454454
, unliftio

src/DearImGui.hs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ module DearImGui
2929
, Raw.DrawData(..)
3030
, Raw.getDrawData
3131
, Raw.checkVersion
32+
33+
-- * Configuration
34+
, enableKeyboardNav
35+
, disableKeyboardNav
36+
, isKeyboardNavEnabled
3237

3338
-- * Demo, Debug, Information
3439
, Raw.showDemoWindow
@@ -457,6 +462,7 @@ import Control.Monad
457462
import Data.Bool
458463
import Data.Foldable
459464
( foldl', for_, traverse_ )
465+
import Data.Bits ((.&.))
460466
import Foreign
461467
import Foreign.C
462468

@@ -496,6 +502,23 @@ getVersion :: MonadIO m => m Text
496502
getVersion = liftIO do
497503
Raw.getVersion >>= Text.peekCString
498504

505+
-- | Enable keyboard navigation
506+
enableKeyboardNav :: MonadIO m => m ()
507+
enableKeyboardNav =
508+
Raw.addConfigFlags Raw.ImGuiConfigFlags_NavEnableKeyboard
509+
510+
-- | Disable keyboard navigation
511+
disableKeyboardNav :: MonadIO m => m ()
512+
disableKeyboardNav =
513+
Raw.removeConfigFlags Raw.ImGuiConfigFlags_NavEnableKeyboard
514+
515+
-- | Check if keyboard navigation is enabled
516+
isKeyboardNavEnabled :: MonadIO m => m Bool
517+
isKeyboardNavEnabled = liftIO do
518+
Raw.ImGuiConfigFlags flags <- Raw.getConfigFlags
519+
let Raw.ImGuiConfigFlags navFlag = Raw.ImGuiConfigFlags_NavEnableKeyboard
520+
pure $ (flags .&. navFlag) /= 0
521+
499522
-- | Send text to logs.
500523
logText :: MonadIO m => Text -> m ()
501524
logText t = liftIO do

src/DearImGui/Raw.hs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ module DearImGui.Raw
3232
, getDrawData
3333
, checkVersion
3434

35+
-- ** Configuration
36+
, getConfigFlags
37+
, setConfigFlags
38+
, addConfigFlags
39+
, removeConfigFlags
40+
3541
-- * Demo, Debug, Information
3642
, showDemoWindow
3743
, showMetricsWindow
@@ -451,6 +457,27 @@ checkVersion = liftIO do
451457
[C.exp| void { IMGUI_CHECKVERSION(); } |]
452458

453459

460+
-- | Get the current ImGuiIO ConfigFlags
461+
getConfigFlags :: MonadIO m => m ImGuiConfigFlags
462+
getConfigFlags = liftIO do
463+
[C.exp| ImGuiConfigFlags { GetIO().ConfigFlags } |]
464+
465+
-- | Set the ImGuiIO ConfigFlags
466+
setConfigFlags :: MonadIO m => ImGuiConfigFlags -> m ()
467+
setConfigFlags flags = liftIO do
468+
[C.block| void { GetIO().ConfigFlags = $(ImGuiConfigFlags flags); } |]
469+
470+
-- | Modify ConfigFlags by OR-ing with additional flags
471+
addConfigFlags :: MonadIO m => ImGuiConfigFlags -> m ()
472+
addConfigFlags flags = liftIO do
473+
[C.block| void { GetIO().ConfigFlags |= $(ImGuiConfigFlags flags); } |]
474+
475+
-- | Remove flags from ConfigFlags
476+
removeConfigFlags :: MonadIO m => ImGuiConfigFlags -> m ()
477+
removeConfigFlags flags = liftIO do
478+
[C.block| void { GetIO().ConfigFlags &= ~$(ImGuiConfigFlags flags); } |]
479+
480+
454481
-- | Create demo window. Demonstrate most ImGui features. Call this to learn
455482
-- about the library! Try to make it always available in your application!
456483
showDemoWindow :: (MonadIO m) => m ()

0 commit comments

Comments
 (0)