1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2025-03-03 16:05:20 -05:00

Update documentation, tests for widget

This commit is contained in:
Dave Davenport 2016-10-13 09:22:08 +02:00
parent 3aa1922aa6
commit 1cd94c27c7
8 changed files with 143 additions and 82 deletions

View file

@ -5,7 +5,7 @@
/**
* @defgroup box box
* @ingroup widgets
* @ingroup widget
*
* Widget used to pack multiple widgets either horizontally or vertically.
* It supports packing widgets horizontally or vertically. Child widgets are always

View file

@ -3,7 +3,7 @@
/**
* @defgroup listview listview
* @ingroup widgets
* @ingroup widget
*
* @{
*/

View file

@ -6,7 +6,7 @@
/**
* @defgroup Scrollbar Scrollbar
* @ingroup widgets
* @ingroup widget
*
* @{
*/

View file

@ -5,7 +5,7 @@
/**
* @defgroup separator separator
* @ingroup widgets
* @ingroup widget
*
* Displays a horizontal separator line. The height of the widget determines the line width.
*

View file

@ -13,7 +13,7 @@
/**
* @defgroup Textbox Textbox
* @ingroup widgets
* @ingroup widget
*
* @{
*/

View file

@ -5,7 +5,7 @@
#include <xcb/xcb.h>
#include <xcb/xproto.h>
/**
* @defgroup widgets widgets
* @defgroup widget widget
*
* Generic abstract widget class. Widgets should 'inherit' from this class (first structure in there structure should be
* widget).
@ -89,16 +89,61 @@ void widget_free ( widget *widget );
*/
void widget_resize ( widget *widget, short w, short h );
/**
* @param widget The widget handle
*
* @returns the height of the widget.
*/
int widget_get_height ( widget *widget );
/**
* @param widget The widget handle
*
* @returns the width of the widget.
*/
int widget_get_width ( widget *widget );
/**
* @param widget The widget handle
*
* Update the widget, and its parent recursively.
* This should be called when size of widget changes.
*/
void widget_update ( widget *widget );
/**
* @param widget The widget handle
*
* Indicate that the widget needs to be redrawn.
* This is done by setting the redraw flag on the toplevel widget.
*/
void widget_queue_redraw ( widget *widget );
/**
* @param widget The widget handle
*
* Check the flag indicating the widget needs to be redrawn.
*/
gboolean widget_need_redraw ( widget *wid );
/**
* @param wid The widget handle
* @param xbe The button press event
*
* Signal the widget that it has been clicked,
* The click should have happened within the region of the widget, check with
* ::widget_intersect.
*
* @returns returns TRUE if click is handled.
*/
gboolean widget_clicked ( widget *wid, xcb_button_press_event_t *xbe );
// Signal!
/**
* @param wid The widget handle
* @param cb The widget click callback
* @param udata the user data to pass to callback
*
* Override the widget clicked handler on widget.
*/
void widget_set_clicked_handler ( widget *wid, widget_clicked_cb cb, void *udata );
/*@}*/

View file

@ -112,6 +112,7 @@ void widget_queue_redraw ( widget *wid )
widget *iter = wid;
// Find toplevel widget.
while ( iter->parent != NULL ) {
iter->need_redraw = TRUE;
iter = iter->parent;
}
iter->need_redraw = TRUE;

View file

@ -17,100 +17,115 @@ unsigned int test =0;
int main ( G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv )
{
// box 20 by 40
widget widget = { 10,10,20,40 };
widget *wid= (widget*)g_malloc0(sizeof(widget));
widget_resize ( wid, 20, 40);
widget_move ( wid, 10, 10);
// Left of box
TASSERT ( widget_intersect ( &widget, 0, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 0, 10) == 0 );
TASSERT ( widget_intersect ( &widget, 0, 25) == 0 );
TASSERT ( widget_intersect ( &widget, 0, 40) == 0 );
TASSERT ( widget_intersect ( &widget, 0, 50) == 0 );
TASSERT ( widget_intersect ( &widget, 9, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 9, 10) == 0 );
TASSERT ( widget_intersect ( &widget, 9, 25) == 0 );
TASSERT ( widget_intersect ( &widget, 9, 40) == 0 );
TASSERT ( widget_intersect ( &widget, 9, 50) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 10) == 1 );
TASSERT ( widget_intersect ( &widget, 10, 25) == 1 );
TASSERT ( widget_intersect ( &widget, 10, 40) == 1 );
TASSERT ( widget_intersect ( &widget, 10, 50) == 0 );
TASSERT ( widget_intersect ( wid, 0, 0) == 0 );
TASSERT ( widget_intersect ( wid, 0, 10) == 0 );
TASSERT ( widget_intersect ( wid, 0, 25) == 0 );
TASSERT ( widget_intersect ( wid, 0, 40) == 0 );
TASSERT ( widget_intersect ( wid, 0, 50) == 0 );
TASSERT ( widget_intersect ( wid, 9, 0) == 0 );
TASSERT ( widget_intersect ( wid, 9, 10) == 0 );
TASSERT ( widget_intersect ( wid, 9, 25) == 0 );
TASSERT ( widget_intersect ( wid, 9, 40) == 0 );
TASSERT ( widget_intersect ( wid, 9, 50) == 0 );
TASSERT ( widget_intersect ( wid, 10, 0) == 0 );
TASSERT ( widget_intersect ( wid, 10, 10) == 1 );
TASSERT ( widget_intersect ( wid, 10, 25) == 1 );
TASSERT ( widget_intersect ( wid, 10, 40) == 1 );
TASSERT ( widget_intersect ( wid, 10, 50) == 0 );
// Middle
TASSERT ( widget_intersect ( &widget, 25, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 25, 10) == 1 );
TASSERT ( widget_intersect ( &widget, 25, 25) == 1 );
TASSERT ( widget_intersect ( &widget, 25, 40) == 1 );
TASSERT ( widget_intersect ( &widget, 25, 50) == 0 );
TASSERT ( widget_intersect ( wid, 25, 0) == 0 );
TASSERT ( widget_intersect ( wid, 25, 10) == 1 );
TASSERT ( widget_intersect ( wid, 25, 25) == 1 );
TASSERT ( widget_intersect ( wid, 25, 40) == 1 );
TASSERT ( widget_intersect ( wid, 25, 50) == 0 );
// Right
TASSERT ( widget_intersect ( &widget, 29, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 29, 10) == 1 );
TASSERT ( widget_intersect ( &widget, 29, 25) == 1 );
TASSERT ( widget_intersect ( &widget, 29, 40) == 1 );
TASSERT ( widget_intersect ( &widget, 29, 50) == 0 );
TASSERT ( widget_intersect ( wid, 29, 0) == 0 );
TASSERT ( widget_intersect ( wid, 29, 10) == 1 );
TASSERT ( widget_intersect ( wid, 29, 25) == 1 );
TASSERT ( widget_intersect ( wid, 29, 40) == 1 );
TASSERT ( widget_intersect ( wid, 29, 50) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 0) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 10) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 25) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 40) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 50) == 0 );
TASSERT ( widget_intersect ( wid, 30, 0) == 0 );
TASSERT ( widget_intersect ( wid, 30, 10) == 0 );
TASSERT ( widget_intersect ( wid, 30, 25) == 0 );
TASSERT ( widget_intersect ( wid, 30, 40) == 0 );
TASSERT ( widget_intersect ( wid, 30, 50) == 0 );
widget_move ( &widget, 30, 30);
widget_move ( wid, 30, 30);
// Left of box
TASSERT ( widget_intersect ( &widget, 10, 20) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 30) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 45) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 60) == 0 );
TASSERT ( widget_intersect ( &widget, 10, 70) == 0 );
TASSERT ( widget_intersect ( &widget, 19, 20) == 0 );
TASSERT ( widget_intersect ( &widget, 19, 30) == 0 );
TASSERT ( widget_intersect ( &widget, 19, 45) == 0 );
TASSERT ( widget_intersect ( &widget, 19, 60) == 0 );
TASSERT ( widget_intersect ( &widget, 19, 70) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 20) == 0 );
TASSERT ( widget_intersect ( &widget, 30, 30) == 1 );
TASSERT ( widget_intersect ( &widget, 30, 45) == 1 );
TASSERT ( widget_intersect ( &widget, 30, 60) == 1 );
TASSERT ( widget_intersect ( &widget, 30, 70) == 0 );
TASSERT ( widget_intersect ( wid, 10, 20) == 0 );
TASSERT ( widget_intersect ( wid, 10, 30) == 0 );
TASSERT ( widget_intersect ( wid, 10, 45) == 0 );
TASSERT ( widget_intersect ( wid, 10, 60) == 0 );
TASSERT ( widget_intersect ( wid, 10, 70) == 0 );
TASSERT ( widget_intersect ( wid, 19, 20) == 0 );
TASSERT ( widget_intersect ( wid, 19, 30) == 0 );
TASSERT ( widget_intersect ( wid, 19, 45) == 0 );
TASSERT ( widget_intersect ( wid, 19, 60) == 0 );
TASSERT ( widget_intersect ( wid, 19, 70) == 0 );
TASSERT ( widget_intersect ( wid, 30, 20) == 0 );
TASSERT ( widget_intersect ( wid, 30, 30) == 1 );
TASSERT ( widget_intersect ( wid, 30, 45) == 1 );
TASSERT ( widget_intersect ( wid, 30, 60) == 1 );
TASSERT ( widget_intersect ( wid, 30, 70) == 0 );
// Middle
TASSERT ( widget_intersect ( &widget, 20+25,20+ 0) == 0 );
TASSERT ( widget_intersect ( &widget, 20+25,20+ 10) == 1 );
TASSERT ( widget_intersect ( &widget, 20+25,20+ 25) == 1 );
TASSERT ( widget_intersect ( &widget, 20+25,20+ 40) == 1 );
TASSERT ( widget_intersect ( &widget, 20+25,20+ 50) == 0 );
TASSERT ( widget_intersect ( wid, 20+25,20+ 0) == 0 );
TASSERT ( widget_intersect ( wid, 20+25,20+ 10) == 1 );
TASSERT ( widget_intersect ( wid, 20+25,20+ 25) == 1 );
TASSERT ( widget_intersect ( wid, 20+25,20+ 40) == 1 );
TASSERT ( widget_intersect ( wid, 20+25,20+ 50) == 0 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+0) == 0 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+10) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+25) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+40) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+50) == 0 );
TASSERT ( widget_intersect ( wid, 20+29, 20+0) == 0 );
TASSERT ( widget_intersect ( wid, 20+29, 20+10) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+25) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+40) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+50) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+0) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+10) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+25) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+40) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+50) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+0) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+10) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+25) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+40) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+50) == 0 );
// Right
TASSERT ( widget_intersect ( &widget, 20+29, 20+0) == 0 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+10) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+25) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+40) == 1 );
TASSERT ( widget_intersect ( &widget, 20+29, 20+50) == 0 );
TASSERT ( widget_intersect ( wid, 20+29, 20+0) == 0 );
TASSERT ( widget_intersect ( wid, 20+29, 20+10) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+25) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+40) == 1 );
TASSERT ( widget_intersect ( wid, 20+29, 20+50) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+0) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+10) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+25) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+40) == 0 );
TASSERT ( widget_intersect ( &widget, 20+30, 20+50) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+0) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+10) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+25) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+40) == 0 );
TASSERT ( widget_intersect ( wid, 20+30, 20+50) == 0 );
TASSERT ( widget_intersect ( NULL, 0, 0) == 0 );
TASSERT ( widget_intersect ( &widget, -100, -100) == 0);
TASSERT ( widget_intersect ( &widget, INT_MIN, INT_MIN) == 0);
TASSERT ( widget_intersect ( &widget, INT_MAX, INT_MAX) == 0);
TASSERT ( widget_intersect ( wid, -100, -100) == 0);
TASSERT ( widget_intersect ( wid, INT_MIN, INT_MIN) == 0);
TASSERT ( widget_intersect ( wid, INT_MAX, INT_MAX) == 0);
// Other wrappers.
TASSERT ( widget_get_height ( wid ) == wid->h);
TASSERT ( widget_get_width ( wid ) == wid->w);
TASSERT ( widget_get_height ( NULL ) == 0);
TASSERT ( widget_get_width ( NULL ) == 0);
TASSERT ( widget_enabled ( wid ) == FALSE );
widget_enable ( wid );
TASSERT ( widget_enabled ( wid ) == TRUE );
widget_disable ( wid );
TASSERT ( widget_enabled ( wid ) == FALSE );
g_free(wid);
}