[prev in list] [next in list] [prev in thread] [next in thread]
List: enlightenment-svn
Subject: E CVS: libs/etk andrunko
From: Enlightenment CVS <noreply () fitx-00 ! ewr ! caoslinux ! org>
Date: 2007-07-31 19:22:40
Message-ID: 20070731192240.0E556A30A2 () cvs ! caoslinux ! org
[Download RAW message or body]
Enlightenment CVS committal
Author : andrunko
Project : e17
Module : libs/etk
Dir : e17/libs/etk/src/lib
Modified Files:
etk_notebook.c etk_notebook.h
Log Message:
Add support for notebook tabs homogeneous.
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_notebook.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- etk_notebook.c 31 Jul 2007 18:42:35 -0000 1.37
+++ etk_notebook.c 31 Jul 2007 19:22:39 -0000 1.38
@@ -21,7 +21,8 @@
enum Etk_Notebook_Property_Id
{
- ETK_NOTEBOOK_TABS_VISIBLE_PROPERTY
+ ETK_NOTEBOOK_TABS_VISIBLE_PROPERTY,
+ ETK_NOTEBOOK_TABS_HOMOGENEOUS_PROPERTY
};
static void _etk_notebook_constructor(Etk_Notebook *notebook);
@@ -75,6 +76,8 @@
etk_type_property_add(notebook_type, "tabs-visible", \
ETK_NOTEBOOK_TABS_VISIBLE_PROPERTY,
ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, \
etk_property_value_bool(ETK_TRUE)); + etk_type_property_add(notebook_type, \
"tabs-homogeneous", ETK_NOTEBOOK_TABS_HOMOGENEOUS_PROPERTY, + \
ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, \
etk_property_value_bool(ETK_FALSE));
notebook_type->property_set = _etk_notebook_property_set;
notebook_type->property_get = _etk_notebook_property_get;
@@ -472,6 +475,33 @@
return notebook->tab_bar_visible;
}
+/**
+ * @brief Sets whether the tab-bar tabs must have the same size or not
+ * @param notebook a notebook
+ * @param tabs_homogeneous if @a tabs_homogeneous is ETK_TRUE, the tab-bar tabs will \
have the same size. + */
+void etk_notebook_tabs_homogeneous_set(Etk_Notebook *notebook, Etk_Bool \
tabs_homogeneous) +{
+ if (!notebook || notebook->tab_bar_homogeneous == tabs_homogeneous)
+ return;
+
+ notebook->tab_bar_homogeneous = tabs_homogeneous;
+ etk_widget_size_recalc_queue(ETK_WIDGET(notebook));
+ etk_object_notify(ETK_OBJECT(notebook), "tabs-homogeneous");
+}
+
+/**
+ * @brief Gets whether or not the tab-bar tabs must have the same size
+ * @param notebook a notebook
+ * @return Returns ETK_TRUE if the tab bar tabs must have the same size, ETK_FALSE \
otherwise + */
+Etk_Bool etk_notebook_tabs_homogeneous_get(Etk_Notebook *notebook)
+{
+ if (!notebook)
+ return ETK_FALSE;
+ return notebook->tab_bar_homogeneous;
+}
+
/**************************
*
* Etk specific functions
@@ -488,6 +518,7 @@
notebook->current_page = NULL;
notebook->tab_bar_focused = ETK_FALSE;
notebook->tab_bar_visible = ETK_TRUE;
+ notebook->tab_bar_homogeneous = ETK_FALSE;
_etk_notebook_tab_bar_create(notebook);
@@ -528,6 +559,9 @@
case ETK_NOTEBOOK_TABS_VISIBLE_PROPERTY:
etk_notebook_tabs_visible_set(notebook, \
etk_property_value_bool_get(value)); break;
+ case ETK_NOTEBOOK_TABS_HOMOGENEOUS_PROPERTY:
+ etk_notebook_tabs_homogeneous_set(notebook, \
etk_property_value_bool_get(value)); + break;
default:
break;
}
@@ -546,6 +580,9 @@
case ETK_NOTEBOOK_TABS_VISIBLE_PROPERTY:
etk_property_value_bool_set(value, notebook->tab_bar_visible);
break;
+ case ETK_NOTEBOOK_TABS_HOMOGENEOUS_PROPERTY:
+ etk_property_value_bool_set(value, notebook->tab_bar_homogeneous);
+ break;
default:
break;
}
@@ -623,9 +660,15 @@
{
p = l->data;
etk_widget_size_request(p->tab, &tab_size);
- size->w += tab_size.w;
+ if (notebook->tab_bar_homogeneous)
+ size->w = ETK_MAX(size->w, tab_size.w);
+ else
+ size->w += tab_size.w;
size->h = ETK_MAX(size->h, tab_size.h);
}
+
+ if (notebook->tab_bar_homogeneous)
+ size->w *= evas_list_count(notebook->pages);
}
/* Resizes the notebook's tab-bar to the allocated size */
@@ -635,28 +678,48 @@
Etk_Size requested_size;
Etk_Size tab_size;
Etk_Geometry tab_geometry;
- float ratio;
+ int tab_w = 0;
+ int extra = 0;
+ float ratio = 0;
Etk_Notebook_Page *p;
Evas_List *l;
if (!widget || !(notebook = ETK_NOTEBOOK(etk_object_data_get(ETK_OBJECT(widget), \
"_Etk_Notebook::Notebook")))) return;
- etk_widget_size_request(widget, &requested_size);
- if (geometry.w >= requested_size.w)
- ratio = 1.0;
+ if (notebook->tab_bar_homogeneous)
+ {
+ int count;
+
+ count = evas_list_count(notebook->pages);
+ tab_w = geometry.w / count;
+ extra = geometry.w % count;
+ }
else
- ratio = (float)geometry.w / requested_size.w;
-
+ {
+ etk_widget_size_request(widget, &requested_size);
+ if (geometry.w >= requested_size.w)
+ ratio = 1.0;
+ else
+ ratio = (float)geometry.w / requested_size.w;
+ }
+
tab_geometry.x = geometry.x;
tab_geometry.y = geometry.y;
tab_geometry.h = geometry.h;
-
+
for (l = notebook->pages; l; l = l->next)
{
p = l->data;
etk_widget_size_request(p->tab, &tab_size);
- tab_geometry.w = tab_size.w * ratio;
+ if (notebook->tab_bar_homogeneous)
+ {
+ tab_geometry.w = tab_w;
+ if (!l->next)
+ tab_geometry.w += extra;
+ }
+ else
+ tab_geometry.w = tab_size.w * ratio;
etk_widget_size_allocate(p->tab, tab_geometry);
tab_geometry.x += tab_geometry.w;
}
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_notebook.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- etk_notebook.h 2 Apr 2007 09:48:29 -0000 1.21
+++ etk_notebook.h 31 Jul 2007 19:22:39 -0000 1.22
@@ -54,7 +54,8 @@
Etk_Widget *tab_bar;
Etk_Bool tab_bar_focused;
Etk_Bool tab_bar_visible;
-
+ Etk_Bool tab_bar_homogeneous;
+
Evas_List *pages;
Etk_Notebook_Page *current_page;
};
@@ -85,6 +86,8 @@
void etk_notebook_tabs_visible_set(Etk_Notebook *notebook, Etk_Bool \
tabs_visible); Etk_Bool etk_notebook_tabs_visible_get(Etk_Notebook *notebook);
+void etk_notebook_tabs_homogeneous_set(Etk_Notebook *notebook, Etk_Bool \
tabs_homogeneous); +Etk_Bool etk_notebook_tabs_homogeneous_get(Etk_Notebook \
*notebook);
/** @} */
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic