Commit a63e0cc539aa2439bb6ee2bce0961aeba37c839e

Authored by Perry Werneck
1 parent 6a81f385
Exists in master and in 2 other branches develop, macos

Adding method to get translated cursor position.

Showing 2 changed files with 36 additions and 0 deletions   Show diff stats
src/core/screen.c
... ... @@ -422,6 +422,27 @@ LIB3270_EXPORT int lib3270_get_cursor_address(const H3270 *hSession)
422 422 return state ? -state : hSession->cursor_addr;
423 423 }
424 424  
  425 +LIB3270_EXPORT int lib3270_get_cursor_position(const H3270 *hSession, unsigned short *row, unsigned short *col)
  426 +{
  427 + int state = check_online_session(hSession);
  428 + if(state)
  429 + {
  430 + *row = *col = 9;
  431 + return state;
  432 + }
  433 +
  434 + unsigned short addr = (unsigned short) hSession->cursor_addr;
  435 +
  436 + if(row)
  437 + *row = (addr / ((unsigned short) hSession->view.cols))+1;
  438 +
  439 + if(col)
  440 + *col = (addr % ((unsigned short) hSession->view.cols))+1;
  441 +
  442 + return 0;
  443 +}
  444 +
  445 +
425 446 /**
426 447 * @brief Converts row/col in a buffer address.
427 448 *
... ...
src/include/lib3270.h
... ... @@ -767,6 +767,21 @@
767 767 LIB3270_EXPORT int lib3270_get_cursor_address(const H3270 *hSession);
768 768  
769 769 /**
  770 + * @brief Get row/col of the current cursor position.
  771 + *
  772 + * @param hSession Session handler.
  773 + * @param row Pointer for current cursor row.
  774 + * @param col Pointer for current cursor column.
  775 + *
  776 + * @return 0 if ok, error code if not (sets errno).
  777 + *
  778 + * @retval EINVAL Invalid session.
  779 + * @retval ENOTCONN Not connected to host.
  780 + *
  781 + */
  782 + LIB3270_EXPORT int lib3270_get_cursor_position(const H3270 *hSession, unsigned short *row, unsigned short *col);
  783 +
  784 + /**
770 785 * @brief Move cursor
771 786 *
772 787 * @param h Session handle.
... ...