@@ -1035,6 +1035,15 @@ def size(self) -> Size:
10351035 width , height = self .console .size
10361036 return Size (width , height )
10371037
1038+ def _get_inline_height (self ) -> int :
1039+ """Get the inline height (height when in inline mode).
1040+
1041+ Returns:
1042+ Height in lines.
1043+ """
1044+ size = self .size
1045+ return max (screen ._get_inline_height (size ) for screen in self ._screen_stack )
1046+
10381047 @property
10391048 def log (self ) -> Logger :
10401049 """The textual logger.
@@ -2324,6 +2333,41 @@ def _print_error_renderables(self) -> None:
23242333
23252334 self ._exit_renderables .clear ()
23262335
2336+ def _build_driver (
2337+ self , headless : bool , inline : bool , mouse : bool , size : tuple [int , int ] | None
2338+ ) -> Driver :
2339+ """Construct a driver instance.
2340+
2341+ Args:
2342+ headless: Request headless driver.
2343+ inline: Request inline driver.
2344+ mouse: Request mouse support.
2345+ size: Initial size.
2346+
2347+ Returns:
2348+ Driver instance.
2349+ """
2350+ driver : Driver
2351+ driver_class : type [Driver ]
2352+ if headless :
2353+ from .drivers .headless_driver import HeadlessDriver
2354+
2355+ driver_class = HeadlessDriver
2356+ elif inline and not WINDOWS :
2357+ from .drivers .linux_inline_driver import LinuxInlineDriver
2358+
2359+ driver_class = LinuxInlineDriver
2360+ else :
2361+ driver_class = self .driver_class
2362+
2363+ driver = self ._driver = driver_class (
2364+ self ,
2365+ debug = constants .DEBUG ,
2366+ mouse = mouse ,
2367+ size = size ,
2368+ )
2369+ return driver
2370+
23272371 async def _process_messages (
23282372 self ,
23292373 ready_callback : CallbackType | None = None ,
@@ -2438,23 +2482,9 @@ async def invoke_ready_callback() -> None:
24382482 load_event = events .Load ()
24392483 await self ._dispatch_message (load_event )
24402484
2441- driver : Driver
2442-
2443- driver_class : type [Driver ]
2444- if headless :
2445- from .drivers .headless_driver import HeadlessDriver
2446-
2447- driver_class = HeadlessDriver
2448- elif inline :
2449- from .drivers .linux_inline_driver import LinuxInlineDriver
2450-
2451- driver_class = LinuxInlineDriver
2452- else :
2453- driver_class = self .driver_class
2454-
2455- driver = self ._driver = driver_class (
2456- self ,
2457- debug = constants .DEBUG ,
2485+ driver = self ._driver = self ._build_driver (
2486+ headless = headless ,
2487+ inline = inline ,
24582488 mouse = mouse ,
24592489 size = terminal_size ,
24602490 )
@@ -2471,7 +2501,7 @@ async def invoke_ready_callback() -> None:
24712501 if self ._driver .is_inline :
24722502 cursor_x , cursor_y = self ._previous_cursor_position
24732503 self ._driver .write (
2474- Control .move (- cursor_x , - cursor_y ).segment .text
2504+ Control .move (- cursor_x , - cursor_y + 1 ).segment .text
24752505 )
24762506 if inline_no_clear :
24772507 console = Console ()
0 commit comments