If you ever want to add shortcuts functionality where you have control over the exact behavior, it's worth learning a little emacs-lisp.
This kind of functionality is trivial to write.
(global-set-key (kbd "<f12>")
;; Keep cursor motion within this block (don't move the users cursor).
I recently experienced the same problem while editing Haskell and Typescript code, so I don't think irony-mode is at fault here. According to the documentation, I understand this is an expected behavior :
By default Flycheck shows the error messages in the minibuffer or in a
separate buffer if the minibuffer is too small to hold the whole error
As was pointed out by nega in the comments, I should have re-indented the file after fixing offset in my init.el file:
(setq c-default-style "linux"
c-basic-offset 4); <-- this changes the default value 8 to 4.