Enlightenment CVS committal
Author : moom
Project : e17
Module : proto
Dir : e17/proto/etk/src/lib
Modified Files:
etk_iconbox.c etk_iconbox.h etk_label.c etk_widget.c
Log Message:
* [Iconbox] Fix: the labels now disappear correctly when an icon is
removed
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_iconbox.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- etk_iconbox.c 8 Aug 2006 18:51:22 -0000 1.11
+++ etk_iconbox.c 21 Aug 2006 13:13:08 -0000 1.12
@@ -193,14 +193,39 @@
iconbox = model->iconbox;
iconbox->models = evas_list_remove(iconbox->models, model);
if (iconbox->current_model == model)
- iconbox->current_model = evas_list_data(evas_list_last(iconbox->models));
- if (iconbox->default_model == model)
- iconbox->default_model = NULL;
+ iconbox->current_model = evas_list_data(iconbox->models);
free(model);
}
/**
+ * @brief Sets the model used by the iconbox
+ * @param iconbox an iconbox
+ * @param model the model that the iconbox should use (if NULL, no icon will
be displayed)
+ */
+void etk_iconbox_current_model_set(Etk_Iconbox *iconbox, Etk_Iconbox_Model
*model)
+{
+ if (!iconbox || (model && model->iconbox != iconbox))
+ return;
+
+ iconbox->current_model = model;
+ etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(iconbox->grid),
NULL);
+ etk_widget_redraw_queue(iconbox->grid);
+}
+
+/**
+ * @brief Gets the model currently used by the iconbox
+ * @param iconbox an iconbox
+ * @return Returns the model currently used by the iconbox
+ */
+Etk_Iconbox_Model *etk_iconbox_current_model_get(Etk_Iconbox *iconbox)
+{
+ if (!iconbox)
+ return NULL;
+ return iconbox->current_model;
+}
+
+/**
* @brief Sets the global geometry of the iconbox model
* @param model an iconbox model
* @param width the width of the cells of the model (min = 10)
@@ -364,33 +389,6 @@
}
/**
- * @brief Sets the model used by the iconbox
- * @param iconbox an iconbox
- * @param model the model that the iconbox should use (if NULL, no icon will
be displayed)
- */
-void etk_iconbox_current_model_set(Etk_Iconbox *iconbox, Etk_Iconbox_Model
*model)
-{
- if (!iconbox || (model && model->iconbox != iconbox))
- return;
-
- iconbox->current_model = model;
- etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(iconbox->grid),
NULL);
- etk_widget_redraw_queue(iconbox->grid);
-}
-
-/**
- * @brief Gets the model currently used by the iconbox
- * @param iconbox an iconbox
- * @return Returns the model currently used by the iconbox
- */
-Etk_Iconbox_Model *etk_iconbox_current_model_get(Etk_Iconbox *iconbox)
-{
- if (!iconbox)
- return NULL;
- return iconbox->current_model;
-}
-
-/**
* @brief Freezes the iconbox: it will not be updated until it is thawed. @n
* This function is useful when you want to add a lot of icons efficiently.
* @param iconbox an iconbox
@@ -420,7 +418,8 @@
* @brief Appends a new icon to the iconbox
* @param iconbox a iconbox
* @param filename the filename of the image to use for the icon. It can be
either an image or an edje file
- * @param edje_group the edje group to use for the icon. If NULL, @a filename
will be considerated as a normal image file
+ * @param edje_group the edje group to use for the icon. If NULL, @a filename
will be considerated as a
+ * normal image file
* @param label the label to associate to the icon
* @return Returns the new icon
*/
@@ -431,6 +430,7 @@
if (!iconbox)
return NULL;
+ /* TODO: more insert func */
icon = malloc(sizeof(Etk_Iconbox_Icon));
icon->iconbox = iconbox;
icon->prev = NULL;
@@ -516,13 +516,17 @@
}
/**
- * @brief Gets the icon located below the position (x, y). The position should
be relative to the canvas
+ * @brief Gets the icon located below the position ( @a x, @a y ). The
position should be relative to the canvas
+ * (TODO: relative to the icobox instead?)
* @param iconbox an iconbox
* @param x the x position
* @param y the y position
- * @param over_cell if @a over_cell == ETK_TRUE, the function will return the
icon if (x, y) is over the cell of the icon
- * @param over_icon if @a over_icon == ETK_TRUE, the function will return the
icon if (x, y) is over the image of the icon
- * @param over_label if @a over_label == ETK_TRUE, the function will return
the icon if (x, y) is over the label of the icon
+ * @param over_cell if @a over_cell is ETK_TRUE, the function will return the
icon if (x, y) is over
+ * the cell of the icon
+ * @param over_icon if @a over_icon == ETK_TRUE, the function will return the
icon if (x, y) is over
+ * the image of the icon
+ * @param over_label if @a over_label == ETK_TRUE, the function will return
the icon if (x, y) is over
+ * the label of the icon
* @return Returns the icon located below the position (x, y), or NULL if none
*/
Etk_Iconbox_Icon *etk_iconbox_icon_get_at_xy(Etk_Iconbox *iconbox, int x, int
y, Etk_Bool over_cell, Etk_Bool over_icon, Etk_Bool over_label)
@@ -584,11 +588,10 @@
}
/**
- * @brief Sets the file used for the icon image
+ * @brief Sets the file path of the icon's image
* @param icon an icon
- * @param filename the filename of the image to use for the icon
- * @param edje_group the edje group to use if the image file is an edje
animation.
- * It has to be set to NULL for a "normal" image
+ * @param filename the filename of the icon's image
+ * @param edje_group the edje group of the icon's image. It has to be set to
NULL for a "normal" image
*/
void etk_iconbox_icon_file_set(Etk_Iconbox_Icon *icon, const char *filename,
const char *edje_group)
{
@@ -611,10 +614,10 @@
}
/**
- * @brief Sets the file used for the icon image
+ * @brief Sets the file used by the icon's image
* @param icon an icon
- * @param filename a location where to store the filename of the image used by
the icon
- * @param edje_group a location where to store the edje group of the image
used by the icon
+ * @param filename a location where to store the filename of the icon's image
+ * @param edje_group a location where to store the edje group of the icon's
image
*/
void etk_iconbox_icon_file_get(Etk_Iconbox_Icon *icon, const char **filename,
const char **edje_group)
{
@@ -794,6 +797,7 @@
iconbox->scrolled_view = etk_scrolled_view_new();
etk_widget_visibility_locked_set(iconbox->scrolled_view, ETK_TRUE);
+ /* TODO: Why do we need this? */
etk_widget_repeat_mouse_events_set(iconbox->scrolled_view, ETK_TRUE);
etk_widget_parent_set(iconbox->scrolled_view, ETK_WIDGET(iconbox));
etk_widget_show(iconbox->scrolled_view);
@@ -805,15 +809,15 @@
etk_widget_show(iconbox->grid);
iconbox->models = NULL;
- iconbox->default_model = etk_iconbox_model_new(iconbox);
- iconbox->current_model = iconbox->default_model;
+ iconbox->current_model = etk_iconbox_model_new(iconbox);
iconbox->num_icons = 0;
iconbox->first_icon = NULL;
iconbox->last_icon = NULL;
-
+
iconbox->frozen = ETK_FALSE;
+ /* TODO: size request */
ETK_WIDGET(iconbox)->size_allocate = _etk_iconbox_size_allocate;
etk_signal_connect("realize", ETK_OBJECT(iconbox),
ETK_CALLBACK(_etk_iconbox_realize_cb), NULL);
@@ -828,7 +832,6 @@
etk_iconbox_clear(iconbox);
- iconbox->default_model = NULL;
iconbox->current_model = NULL;
while (iconbox->models)
etk_iconbox_model_free(iconbox->models->data);
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_iconbox.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_iconbox.h 25 May 2006 21:07:00 -0000 1.7
+++ etk_iconbox.h 21 Aug 2006 13:13:08 -0000 1.8
@@ -21,8 +21,8 @@
#define ETK_IS_ICONBOX(obj) (ETK_OBJECT_CHECK_TYPE((obj), ETK_ICONBOX_TYPE))
/**
- * @brief Describes the model of an iconbox: it includes the position and the
size of the cell, the icon and
- * the label. An iconbox can have several models, and you can change its
current model to change the view
+ * @brief Describes the model of an iconbox: it includes the position and the
size of the cell, of the icon and
+ * of the label. An iconbox can have several models, and you can change its
current model to change the view
* @structinfo
*/
struct Etk_Iconbox_Model
@@ -74,7 +74,7 @@
};
/**
- * @brief @widget The structure of an iconbox
+ * @brief @widget A widget that can display icons aligned on a grid
* @structinfo
*/
struct Etk_Iconbox
@@ -88,7 +88,6 @@
Evas_List *models;
Etk_Iconbox_Model *current_model;
- Etk_Iconbox_Model *default_model;
int num_icons;
Etk_Iconbox_Icon *first_icon;
@@ -98,11 +97,15 @@
Etk_Bool frozen;
};
-Etk_Type *etk_iconbox_type_get();
+/* TODO: scrolled_view_get() */
+
+Etk_Type *etk_iconbox_type_get();
Etk_Widget *etk_iconbox_new();
Etk_Iconbox_Model *etk_iconbox_model_new(Etk_Iconbox *iconbox);
-void etk_iconbox_model_free(Etk_Iconbox_Model *model);
+void etk_iconbox_model_free(Etk_Iconbox_Model *model);
+void etk_iconbox_current_model_set(Etk_Iconbox *iconbox,
Etk_Iconbox_Model *model);
+Etk_Iconbox_Model *etk_iconbox_current_model_get(Etk_Iconbox *iconbox);
void etk_iconbox_model_geometry_set(Etk_Iconbox_Model *model, int width, int
height, int xpadding, int ypadding);
void etk_iconbox_model_geometry_get(Etk_Iconbox_Model *model, int *width, int
*height, int *xpadding, int *ypadding);
@@ -111,31 +114,27 @@
void etk_iconbox_model_label_geometry_set(Etk_Iconbox_Model *model, int x, int
y, int width, int height, float xalign, float yalign);
void etk_iconbox_model_label_geometry_get(Etk_Iconbox_Model *model, int *x,
int *y, int *width, int *height, float *xalign, float *yalign);
-void etk_iconbox_current_model_set(Etk_Iconbox *iconbox, Etk_Iconbox_Model
*model);
-Etk_Iconbox_Model *etk_iconbox_current_model_get(Etk_Iconbox *iconbox);
-
void etk_iconbox_freeze(Etk_Iconbox *iconbox);
void etk_iconbox_thaw(Etk_Iconbox *iconbox);
Etk_Iconbox_Icon *etk_iconbox_append(Etk_Iconbox *iconbox, const char
*filename, const char *edje_group, const char *label);
-void etk_iconbox_icon_del(Etk_Iconbox_Icon *icon);
-void etk_iconbox_clear(Etk_Iconbox *iconbox);
+void etk_iconbox_icon_del(Etk_Iconbox_Icon *icon);
+void etk_iconbox_clear(Etk_Iconbox *iconbox);
Etk_Iconbox_Icon *etk_iconbox_icon_get_at_xy(Etk_Iconbox *iconbox, int x, int
y, Etk_Bool over_cell, Etk_Bool over_icon, Etk_Bool over_label);
-void etk_iconbox_icon_file_set(Etk_Iconbox_Icon *icon, const char *filename,
const char *edje_group);
-void etk_iconbox_icon_file_get(Etk_Iconbox_Icon *icon, const char **filename,
const char **edje_group);
-void etk_iconbox_icon_label_set(Etk_Iconbox_Icon *icon, const char *label);
+void etk_iconbox_icon_file_set(Etk_Iconbox_Icon *icon, const char
*filename, const char *edje_group);
+void etk_iconbox_icon_file_get(Etk_Iconbox_Icon *icon, const char
**filename, const char **edje_group);
+void etk_iconbox_icon_label_set(Etk_Iconbox_Icon *icon, const char
*label);
const char *etk_iconbox_icon_label_get(Etk_Iconbox_Icon *icon);
void etk_iconbox_icon_data_set(Etk_Iconbox_Icon *icon, void *data);
void etk_iconbox_icon_data_set_full(Etk_Iconbox_Icon *icon, void *data, void
(*free_cb)(void *data));
void *etk_iconbox_icon_data_get(Etk_Iconbox_Icon *icon);
-void etk_iconbox_select_all(Etk_Iconbox *iconbox);
-void etk_iconbox_unselect_all(Etk_Iconbox *iconbox);
-
-void etk_iconbox_icon_select(Etk_Iconbox_Icon *icon);
-void etk_iconbox_icon_unselect(Etk_Iconbox_Icon *icon);
+void etk_iconbox_select_all(Etk_Iconbox *iconbox);
+void etk_iconbox_unselect_all(Etk_Iconbox *iconbox);
+void etk_iconbox_icon_select(Etk_Iconbox_Icon *icon);
+void etk_iconbox_icon_unselect(Etk_Iconbox_Icon *icon);
Etk_Bool etk_iconbox_is_selected(Etk_Iconbox_Icon *icon);
/** @} */
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_label.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- etk_label.c 13 Aug 2006 22:42:23 -0000 1.20
+++ etk_label.c 21 Aug 2006 13:13:08 -0000 1.21
@@ -336,16 +336,16 @@
_etk_label_style_use = 0;
}
+ label->clip = evas_object_rectangle_add(evas);
+ evas_object_show(label->clip);
+ etk_widget_member_object_add(ETK_WIDGET(label), label->clip);
+
label->text_object = evas_object_textblock_add(evas);
evas_object_textblock_style_set(label->text_object, _etk_label_style);
evas_object_show(label->text_object);
etk_widget_member_object_add(ETK_WIDGET(label), label->text_object);
- _etk_label_style_use++;
-
- label->clip = evas_object_rectangle_add(evas);
evas_object_clip_set(label->text_object, label->clip);
- evas_object_show(label->clip);
- etk_widget_member_object_add(ETK_WIDGET(label), label->clip);
+ _etk_label_style_use++;
evas_object_textblock_text_markup_set(label->text_object, label->text);
etk_widget_size_recalc_queue(ETK_WIDGET(label));
@@ -365,6 +365,7 @@
evas_textblock_style_free(_etk_label_style);
_etk_label_style = NULL;
}
+ label->text_object = NULL;
label->clip = NULL;
}
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_widget.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -3 -r1.74 -r1.75
--- etk_widget.c 20 Aug 2006 20:41:20 -0000 1.74
+++ etk_widget.c 21 Aug 2006 13:13:08 -0000 1.75
@@ -1322,13 +1322,15 @@
* @brief Adds an evas object to the list of member objects of the widget. @n
* A member object is automatically shown/hidden when the widget is
shown/hidden, it is automatically clipped when the
* widget is, and it is used by the widget to receive mouse events. @n
- * The object will be automatically deleted when the object will be
unrealized, unless you remove it before the widget
- * is deleted, with etk_widget_member_object_del().
+ * The object will be automatically deleted when the object is unrealized,
unless you remove it before the widget
+ * is deleted with etk_widget_member_object_del().
* @param widget a widget
* @param object the evas object to add
* @return Returns ETK_TRUE on success. ETK_FALSE on failure, probably because
the widget and the object do not
* belong to the same evas, or because the widget is not realized yet
- * @note The object has to belong to the same evas than the widget
+ * @note The object has to belong to the same evas as the widget
+ * @note The object may be clipped against the clip object of the widget. So
if you want to clip the object against your
+ * own clip object, you'll have to clip it after having called
etk_widget_member_object_add()
* @widget_implementation
*/
Etk_Bool etk_widget_member_object_add(Etk_Widget *widget, Evas_Object *object)
@@ -1943,7 +1945,6 @@
if (!widget)
return;
- _etk_widget_unrealize(widget);
etk_widget_parent_set(widget, NULL);
while (widget->theme_children)
@@ -1976,6 +1977,8 @@
if (!(widget = ETK_WIDGET(object)))
return;
+
+ _etk_widget_unrealize(widget);
/* Remove the children */
while (widget->children)
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs