mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 21:57:55 +00:00
gui_session: definition of Gui::Title
This commit allows all GUI clients and servers to talk about the same type. Issue #5242
This commit is contained in:
parent
24378ac873
commit
805e3552fd
@ -79,8 +79,7 @@ static long config_fb_y = 260;
|
||||
/**
|
||||
* Window title
|
||||
*/
|
||||
using Title = Genode::String<128>;
|
||||
static Title config_title { "Liquid Framebuffer" };
|
||||
static Gui::Title config_title { "Liquid Framebuffer" };
|
||||
|
||||
/**
|
||||
* Resize handle
|
||||
|
@ -54,7 +54,7 @@ class Decorator::Window : public Window_base
|
||||
* We supply the window ID as label for the anchor view.
|
||||
*/
|
||||
if (id)
|
||||
_gui.enqueue<Command::Title>(_id, Genode::String<128>(id).string());
|
||||
_gui.enqueue<Command::Title>(_id, Gui::Title { id });
|
||||
}
|
||||
|
||||
~Gui_view()
|
||||
|
@ -161,8 +161,7 @@ class Decorator::Window : public Window_base, public Animator::Item
|
||||
* We supply the window ID as label for the anchor view.
|
||||
*/
|
||||
if (win_id)
|
||||
_gui.enqueue<Command::Title>(_id,
|
||||
Genode::String<128>(win_id).string());
|
||||
_gui.enqueue<Command::Title>(_id, Gui::Title { win_id });
|
||||
}
|
||||
|
||||
Gui::View_id _create_remote_view(Gui::Connection &remote_gui)
|
||||
|
@ -107,9 +107,9 @@ class Wm::Gui::View : private Genode::Weak_object<View>,
|
||||
|
||||
protected:
|
||||
|
||||
using Title = Genode::String<100>;
|
||||
using Command = Gui::Session::Command;
|
||||
using View_id = Gui::View_id;
|
||||
using Title = Gui::Title;
|
||||
using Command = Gui::Session::Command;
|
||||
using View_id = Gui::View_id;
|
||||
|
||||
Session_label _session_label;
|
||||
Real_gui &_real_gui;
|
||||
@ -144,7 +144,7 @@ class Wm::Gui::View : private Genode::Weak_object<View>,
|
||||
|
||||
_propagate_view_geometry();
|
||||
_real_gui.enqueue<Command::Offset>(*_real_view, _buffer_offset);
|
||||
_real_gui.enqueue<Command::Title> (*_real_view, _title.string());
|
||||
_real_gui.enqueue<Command::Title> (*_real_view, _title);
|
||||
|
||||
Constructible<View_id> real_neighbor_id { };
|
||||
|
||||
@ -206,9 +206,9 @@ class Wm::Gui::View : private Genode::Weak_object<View>,
|
||||
}
|
||||
}
|
||||
|
||||
virtual void title(char const *title)
|
||||
virtual void title(Title const &title)
|
||||
{
|
||||
_title = Title(title);
|
||||
_title = title;
|
||||
|
||||
if (_real_view.constructed()) {
|
||||
_real_gui.enqueue<Command::Title>(*_real_view, title);
|
||||
@ -326,7 +326,7 @@ class Wm::Gui::Top_level_view : public View, private List<Top_level_view>::Eleme
|
||||
*/
|
||||
if (!_win_id.valid()) {
|
||||
_win_id = _window_registry.create();
|
||||
_window_registry.title(_win_id, _window_title.string());
|
||||
_window_registry.title(_win_id, _window_title);
|
||||
_window_registry.label(_win_id, _session_label);
|
||||
_window_registry.has_alpha(_win_id, View::has_alpha());
|
||||
_window_registry.resizeable(_win_id, _resizeable);
|
||||
@ -339,14 +339,14 @@ class Wm::Gui::Top_level_view : public View, private List<Top_level_view>::Eleme
|
||||
|
||||
Area size() const { return _geometry.area; }
|
||||
|
||||
void title(char const *title) override
|
||||
void title(Title const &title) override
|
||||
{
|
||||
View::title(title);
|
||||
|
||||
_window_title = Title(title);
|
||||
_window_title = title;
|
||||
|
||||
if (_win_id.valid())
|
||||
_window_registry.title(_win_id, _window_title.string());
|
||||
_window_registry.title(_win_id, _window_title);
|
||||
}
|
||||
|
||||
bool has_win_id(Window_registry::Id id) const { return id == _win_id; }
|
||||
|
@ -61,7 +61,7 @@ class Wm::Window_registry
|
||||
{
|
||||
public:
|
||||
|
||||
using Title = Genode::String<200>;
|
||||
using Title = Gui::Title;
|
||||
using Session_label = Genode::Session_label;
|
||||
|
||||
enum Has_alpha { HAS_ALPHA, HAS_NO_ALPHA };
|
||||
@ -261,9 +261,9 @@ class Wm::Window_registry
|
||||
|
||||
void size(Id id, Area size) { _set_attr(id, size); }
|
||||
|
||||
void title(Id id, Window::Title title) { _set_attr(id, title); }
|
||||
void title(Id id, Window::Title const &title) { _set_attr(id, title); }
|
||||
|
||||
void label(Id id, Window::Session_label label) { _set_attr(id, label); }
|
||||
void label(Id id, Window::Session_label const &label) { _set_attr(id, label); }
|
||||
|
||||
void has_alpha(Id id, bool has_alpha)
|
||||
{
|
||||
|
@ -269,7 +269,7 @@ class Pdf_view
|
||||
Genode::log(Genode::Cstring(pdfapp_version(&_pdfapp)));
|
||||
}
|
||||
|
||||
void title(char const *msg)
|
||||
void title(Gui::Title const &msg)
|
||||
{
|
||||
using Command = Gui::Session::Command;
|
||||
_gui.enqueue<Command::Title>(_view, msg);
|
||||
@ -405,7 +405,7 @@ void winreloadfile(pdfapp_t *)
|
||||
void wintitle(pdfapp_t *pdfapp, char *s)
|
||||
{
|
||||
Pdf_view *pdf_view = (Pdf_view *)pdfapp->userdata;
|
||||
pdf_view->title(s);
|
||||
pdf_view->title((char const *)s);
|
||||
}
|
||||
|
||||
|
||||
|
@ -39,6 +39,7 @@ namespace Gui {
|
||||
using View_capability = Capability<View>;
|
||||
using View_id = Id_space<View_ref>::Id;
|
||||
|
||||
using Title = String<64>;
|
||||
using Rect = Surface_base::Rect;
|
||||
using Point = Surface_base::Point;
|
||||
using Area = Surface_base::Area;
|
||||
@ -85,7 +86,7 @@ struct Gui::Session : Genode::Session
|
||||
struct Front_of : View_op<FRONT_OF> { View_id neighbor; };
|
||||
struct Behind_of : View_op<BEHIND_OF> { View_id neighbor; };
|
||||
struct Background : View_op<BACKGROUND> { };
|
||||
struct Title : View_op<TITLE> { String<64> title; };
|
||||
struct Title : View_op<TITLE> { Gui::Title title; };
|
||||
|
||||
Opcode opcode;
|
||||
union
|
||||
|
@ -136,7 +136,7 @@ void Gui_session::_execute_command(Command const &command)
|
||||
case Command::TITLE:
|
||||
|
||||
with_this(command.title, [&] (View &view, Command::Title const &args) {
|
||||
_view_stack.title(view, args.title.string()); });
|
||||
_view_stack.title(view, args.title); });
|
||||
return;
|
||||
|
||||
case Command::NOP:
|
||||
|
@ -65,8 +65,6 @@ class Nitpicker::View : private Same_buffer_list_elem,
|
||||
{
|
||||
public:
|
||||
|
||||
using Title = String<32>;
|
||||
|
||||
using Weak_object<View>::weak_ptr;
|
||||
|
||||
private:
|
||||
|
@ -277,7 +277,7 @@ void View_stack::stack(View &view, View const *neighbor, bool behind)
|
||||
}
|
||||
|
||||
|
||||
void View_stack::title(View &view, const char *title)
|
||||
void View_stack::title(View &view, Title const &title)
|
||||
{
|
||||
view.title(_font, title);
|
||||
_place_labels(view.abs_geometry());
|
||||
|
@ -208,7 +208,7 @@ class Nitpicker::View_stack
|
||||
/**
|
||||
* Set view title
|
||||
*/
|
||||
void title(View &view, char const *title);
|
||||
void title(View &view, Title const &title);
|
||||
|
||||
/**
|
||||
* Find view at specified position
|
||||
|
@ -34,13 +34,11 @@ class Test::View : private List<View>::Element, Interface
|
||||
{
|
||||
public:
|
||||
|
||||
using Title = String<32>;
|
||||
|
||||
struct Attr
|
||||
{
|
||||
Gui::Point pos;
|
||||
Gui::Area size;
|
||||
Title title;
|
||||
Gui::Title title;
|
||||
};
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user