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:
parent
3aa1922aa6
commit
1cd94c27c7
8 changed files with 143 additions and 82 deletions
include/widgets
source/widgets
test
|
@ -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
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
/**
|
||||
* @defgroup listview listview
|
||||
* @ingroup widgets
|
||||
* @ingroup widget
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
/**
|
||||
* @defgroup Scrollbar Scrollbar
|
||||
* @ingroup widgets
|
||||
* @ingroup widget
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
/**
|
||||
* @defgroup Textbox Textbox
|
||||
* @ingroup widgets
|
||||
* @ingroup widget
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
|
|
@ -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 );
|
||||
|
||||
/*@}*/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue