@@ -68,17 +68,14 @@ bool g_component::setBounds(const g_rectangle& rect)
6868 g_send_message_t (g_ui_delegate_tid, &request, sizeof (g_ui_component_set_bounds_request), tx);
6969
7070 // read response
71- size_t bufferSize = sizeof (g_message_header) + sizeof (g_ui_component_set_bounds_response);
72- uint8_t buffer[bufferSize];
73-
74- bool success = false ;
75- if (g_receive_message_t (buffer, bufferSize, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
71+ size_t buflen = sizeof (g_message_header) + sizeof (g_ui_simple_response);
72+ uint8_t buffer[buflen];
73+ if (g_receive_message_t (buffer, buflen, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
7674 {
77- auto response = (g_ui_component_set_bounds_response *) G_MESSAGE_CONTENT (buffer);
78- success = response->status == G_UI_PROTOCOL_SUCCESS;
75+ auto response = (g_ui_simple_response *) G_MESSAGE_CONTENT (buffer);
76+ return response->status == G_UI_PROTOCOL_SUCCESS;
7977 }
80-
81- return success;
78+ return false ;
8279}
8380
8481g_rectangle g_component::getBounds ()
@@ -284,3 +281,105 @@ bool g_component::setDispatchesFocus(bool d)
284281{
285282 return setNumericProperty (G_UI_PROPERTY_DISPATCHES_FOCUS, d ? 1 : 0 );
286283}
284+
285+ bool g_component::setPreferredSize (g_dimension size)
286+ {
287+ if (!g_ui_initialized)
288+ return false ;
289+
290+ g_message_transaction tx = g_get_message_tx_id ();
291+
292+ g_ui_component_set_preferred_size_request request;
293+ request.header .id = G_UI_PROTOCOL_SET_PREFERRED_SIZE;
294+ request.id = this ->id ;
295+ request.size = size;
296+ g_send_message_t (g_ui_delegate_tid, &request, sizeof (request), tx);
297+
298+ size_t buflen = sizeof (g_message_header) + sizeof (g_ui_simple_response);
299+ uint8_t buffer[buflen];
300+ if (g_receive_message_t (buffer, buflen, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
301+ {
302+ auto response = (g_ui_simple_response*) G_MESSAGE_CONTENT (buffer);
303+ return response->status == G_UI_PROTOCOL_SUCCESS;
304+ }
305+ return false ;
306+ }
307+
308+ bool g_component::setFlexOrientation (bool horizontal)
309+ {
310+ if (!g_ui_initialized)
311+ return false ;
312+
313+ g_message_transaction tx = g_get_message_tx_id ();
314+
315+ g_ui_flex_set_orientation_request request;
316+ request.header .id = G_UI_PROTOCOL_FLEX_SET_ORIENTATION;
317+ request.id = this ->id ;
318+ request.horizontal = horizontal;
319+ g_send_message_t (g_ui_delegate_tid, &request, sizeof (g_ui_flex_set_orientation_request), tx);
320+
321+ size_t buflen = sizeof (g_message_header) + sizeof (g_ui_simple_response);
322+ uint8_t buffer[buflen];
323+ if (g_receive_message_t (buffer, buflen, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
324+ {
325+ auto response = (g_ui_simple_response*) G_MESSAGE_CONTENT (buffer);
326+ return response->status == G_UI_PROTOCOL_SUCCESS;
327+ }
328+ return false ;
329+ }
330+
331+ bool g_component::setFlexComponentInfo (g_component* child, float grow, float shrink, int basis)
332+ {
333+ if (!g_ui_initialized)
334+ return false ;
335+
336+ g_message_transaction tx = g_get_message_tx_id ();
337+
338+ g_ui_flex_set_component_info request;
339+ request.header .id = G_UI_PROTOCOL_FLEX_SET_COMPONENT_INFO;
340+ request.parent = this ->id ;
341+ request.child = child->id ;
342+ request.grow = grow;
343+ request.shrink = shrink;
344+ request.basis = basis;
345+ g_send_message_t (g_ui_delegate_tid, &request, sizeof (g_ui_flex_set_component_info), tx);
346+
347+ size_t buflen = sizeof (g_message_header) + sizeof (g_ui_simple_response);
348+ uint8_t buffer[buflen];
349+ if (g_receive_message_t (buffer, buflen, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
350+ {
351+ auto response = (g_ui_simple_response*) G_MESSAGE_CONTENT (buffer);
352+ return response->status == G_UI_PROTOCOL_SUCCESS;
353+ }
354+ return false ;
355+ }
356+
357+
358+ bool g_component::setFlexPadding (g_insets padding)
359+ {
360+ if (!g_ui_initialized)
361+ return false ;
362+
363+ g_message_transaction tx = g_get_message_tx_id ();
364+
365+ g_ui_flex_set_padding request;
366+ request.header .id = G_UI_PROTOCOL_FLEX_SET_PADDING;
367+ request.id = this ->id ;
368+ request.insets = padding;
369+ g_send_message_t (g_ui_delegate_tid, &request, sizeof (g_ui_flex_set_padding), tx);
370+
371+ size_t buflen = sizeof (g_message_header) + sizeof (g_ui_simple_response);
372+ uint8_t buffer[buflen];
373+ if (g_receive_message_t (buffer, buflen, tx) == G_MESSAGE_RECEIVE_STATUS_SUCCESSFUL)
374+ {
375+ auto response = (g_ui_simple_response*) G_MESSAGE_CONTENT (buffer);
376+ return response->status == G_UI_PROTOCOL_SUCCESS;
377+ }
378+ return false ;
379+ }
380+
381+
382+ bool g_component::setFlexGap (int gap)
383+ {
384+ return setNumericProperty (G_UI_PROPERTY_FLEX_GAP, gap);
385+ }
0 commit comments