Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • C clim-tos
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 10
    • Issues 10
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • mcclim
  • clim-tos
  • Issues
  • #20
Closed
Open
Issue created Oct 22, 2017 by Jacek Złydach@jzlydachDeveloper

Condition when resizing a window to close to 0 width or height

When resizing a window, if you shrink it too much in one dimension, a condition gets signalled. It sounds reasonable in theory, though I recall seeing in XLib documentation a note that the application should generally live with whatever size it gets (see here).

For now, I suggest one or both of the following approaches:

  • Finding a way to tell WM that the application needs to be no smaller than some given size (maybe through this?) - various other programs I've tested, like Emacs, terminal and Files on Ubuntu, have some different minimum sizes set.
  • Handling the condition by telling X to resize the window back.

Not sure whether the handling should happen on the demo size, or should some of it be integrated directly into CLX port as (configurable) "sane defaults".


Condition example with backtrace:

Trying to resize sheet #<CLIM:VBOX-PANE {10105F5A73}> to be too small (-1 x 236)
   [Condition of type SIMPLE-ERROR]

Restarts:
 0: [NIL] Restart event loop for #<CLX-PORT {100205AED3}>
 1: [NIL] Exit event loop for #<CLX-PORT {100205AED3}>
 2: [ABORT] abort thread (#<THREAD "CLIM Event Dispatcher for (CLX)" RUNNING {1002365A53}>)

Backtrace:
  0: ((:METHOD CLIM:RESIZE-SHEET (CLIM:BASIC-SHEET T T)) #<CLIM:VBOX-PANE {10105F5A73}> -1 236) [fast-method]
      Locals:
        CLIM-SILICA::HEIGHT = 236
        CLIM:SHEET = #<CLIM:VBOX-PANE {10105F5A73}>
        CLIM-SILICA::WIDTH = -1
  1: ((:METHOD CLIM:MOVE-AND-RESIZE-SHEET (CLIM:BASIC-SHEET T T T T)) #<CLIM:VBOX-PANE {10105F5A73}> 1 1 -1 236) [fast-method]
      Locals:
        CLIM-SILICA::HEIGHT = 236
        CLIM:SHEET = #<CLIM:VBOX-PANE {10105F5A73}>
        CLIM-SILICA::WIDTH = -1
        CLIM-SILICA::X = 1
        CLIM-SILICA::Y = 1
  2: ((:METHOD CLIM:ALLOCATE-SPACE (CLIM:BORDER-PANE T T)) #<CLIM:OUTLINED-PANE {10104C8B83}> 1 238) [fast-method]
      Locals:
        CLIM-SILICA::HEIGHT = 238
        CLIM:PANE = #<CLIM:OUTLINED-PANE {10104C8B83}>
        CLIM-SILICA::WIDTH = 1
  3: ((SB-PCL::EMF CLIM:NOTE-SHEET-REGION-CHANGED) #<unused argument> #<unused argument> #<CLIM:OUTLINED-PANE {10104C8B83}>)
      Locals:
        SB-PCL::.ARG0. = #<CLIM:OUTLINED-PANE {10104C8B83}>
        SB-DEBUG::MORE = NIL
  4: ((:METHOD CLIM:LAYOUT-FRAME (CLIM:STANDARD-APPLICATION-FRAME)) #<CLIM-DEMO::DEMO-DRIVER {10026A5233}> 1 238) [fast-method]
      Locals:
        CLIM-INTERNALS::FRAME = #<CLIM-DEMO::DEMO-DRIVER {10026A5233}>
        CLIM-INTERNALS::HEIGHT = 238
        CLIM-INTERNALS::WIDTH = 1
  5: ((SB-PCL::EMF CLIM:NOTE-SHEET-REGION-CHANGED) #<unused argument> #<unused argument> #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}> :PORT-DID-IT T)
      Locals:
        SB-PCL::.ARG0. = #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}>
        SB-DEBUG::MORE = (:PORT-DID-IT T)
  6: ((:METHOD CLIM-SILICA:MIRROR-REGION-UPDATED (CLIM:BASIC-PORT CLIM:MIRRORED-SHEET-MIXIN)) #<CLX-CLIM::CLX-PORT {100205AED3}> #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}>) [fast-method]
      Locals:
        CLIM:PORT = #<CLX-CLIM::CLX-PORT {100205AED3}>
        CLIM:SHEET = #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}>
        CLIM-SILICA::TRANSFORMATION-CHANGED-P = NIL
  7: ((:METHOD CLIM:HANDLE-EVENT (CLIM:MIRRORED-SHEET-MIXIN CLIM:WINDOW-CONFIGURATION-EVENT)) #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}> #<CLIM:WINDOW-CONFIGURATION-EVENT /x 0:1 y 0:238/>) [fast-method]
      Locals:
        CLIM:EVENT = #<CLIM:WINDOW-CONFIGURATION-EVENT /x 0:1 y 0:238/>
        CLIM:SHEET = #<CLIM:TOP-LEVEL-SHEET {10104C8BC3}>
  8: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN CLIM:PROCESS-NEXT-EVENT))
  9: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
 10: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN CLIM:PROCESS-NEXT-EVENT) {7FFFEAB5E5AB}> #<SB-THREAD:MUTEX "CLX Event Lock" owner: #<SB-THREAD:THREAD "CLI..
 11: ((:METHOD CLIM:PROCESS-NEXT-EVENT (CLX-CLIM::CLX-PORT)) #<unavailable argument> :TIMEOUT #<unavailable argument> :WAIT-FUNCTION #<unused argument> :STATE #<unused argument>) [fast-method]
 12: ((:METHOD CLIM-SILICA:PORT-EVENT-LOOP (CLIM:BASIC-PORT)) #<CLX-CLIM::CLX-PORT {100205AED3}>) [fast-method]
 13: ((FLET "WITHOUT-INTERRUPTS-BODY-4" :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
 14: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
 15: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-THREAD::CALL-WITH-MUTEX))
 16: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) {7FFFEAB5EC9B}> #<SB-THREAD:MUTEX "thread result lock" owner: #<SB-THREAD:THR..
 17: (SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE #<SB-THREAD:THREAD "CLIM Event Dispatcher for (CLX)" RUNNING {1002365A53}> NIL #<CLOSURE (LAMBDA NIL :IN CLIM:RESTART-PORT) {1002364C5B}> (#<SB-THREAD:TH..
 18: ("foreign function: call_into_lisp")
 19: ("foreign function: new_thread_trampoline")
 --more--
Assignee
Assign to
Time tracking