Author: michael_meeks
Date: Mon Jul 23 16:30:48 2007
New Revision: 39605
URL: http://svn.opensuse.org/viewcvs/yast?rev=39605&view=rev
Log:
2007-07-23 Michael Meeks
* src/YGPackageSelector.cc (sync_tree_views_scroll): this
needs re-writing to be more efficient in corner cases: eg.
no zypp sources. For now use an iteration timeout of 10
loops before bailing out for a big speed win.
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/YGPackageSelector.cc
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=39605&r1=39604&r2=39605&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Mon Jul 23 16:30:48 2007
@@ -1,5 +1,10 @@
2007-07-23 Michael Meeks
+ * src/YGPackageSelector.cc (sync_tree_views_scroll): this
+ needs re-writing to be more efficient in corner cases: eg.
+ no zypp sources. For now use an iteration timeout of 10
+ loops before bailing out for a big speed win.
+
* src/YGPackageSelector.cc (compat_gtk_tree_model_filter_convert_child_iter_to_iter):
back-compat method for older gtk+s (SLED10).
@@ -7,7 +12,9 @@
accordingly.
* src/YGPackageSelector.cc (induceObjects): fix tribool related
- crasher.
+ crasher n#293065.
+ (PackageSelector): remove m_searching, in favour of the more robust
+ !m_search_queries.empty()
* src/YGImage.cc (YGImage::initOptions): set m_isScaled, m_isTiled
before we use them; kill valgrind uninitialized value error churn.
Modified: trunk/gtk/src/YGPackageSelector.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPackageSelector.cc?rev=39605&r1=39604&r2=39605&view=diff
==============================================================================
--- trunk/gtk/src/YGPackageSelector.cc (original)
+++ trunk/gtk/src/YGPackageSelector.cc Mon Jul 23 16:30:48 2007
@@ -1021,7 +1021,6 @@
GtkWidget *m_search_entry, *m_plain_view;
guint search_timeout_id;
bool name_opt, summary_opt, descr_opt, provides_opt, requires_opt;
- bool m_searching;
list <string> m_search_queries;
// Interface tweak
@@ -1781,7 +1780,6 @@
GTK_TOGGLE_BUTTON (pThis->m_plain_view));
if (!plain_view)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pThis->m_plain_view), TRUE);
- pThis->m_searching = strlen (query) > 0;
pThis->m_search_queries = YGUtils::splitString (query, ' ');
// just re-filter
@@ -1825,7 +1823,7 @@
gtk_tree_model_get (model, iter, visible_col, &visible, 8, &has_children, -1);
if (has_children)
visible = TRUE;
- else if (visible && pThis->m_searching) {
+ else if (visible && !pThis->m_search_queries.empty()) {
ZyppSelectablePtr selectable;
gtk_tree_model_get (model, iter, 0, &selectable, -1);
visible = pThis->does_package_match (selectable);
@@ -1921,7 +1919,7 @@
GtkTreeIter *child_iter)
{
#if GTK_CHECK_VERSION(2,10,0)
- return gtk_tree_model_filter_convert_child_iter_to_iter (filter, filter_iter, child_iter);
+ return gtk_tree_model_filter_convert_child_iter_to_iter (filter, filter_iter, child_iter);
#else // cut/paste from gtk+ HEAD...
gboolean ret;
GtkTreePath *child_path, *path;
@@ -1970,12 +1968,17 @@
gtk_tree_model_get_iter (base_model, &iter, _path);
gtk_tree_path_free (_path);
+ int timeout = 0;
+ // Try to find a a similar item in the other view to synchronise with
while (!compat_gtk_tree_model_filter_convert_child_iter_to_iter (
GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (other_view)),
&other_iter, &iter))
{
if (!gtk_tree_model_iter_next (base_model, &iter))
return false;
+ // This turns into N^3 very quickly if we search too hard
+ if (timeout++ > 10)
+ return false;
select_it = false; // not the same package -- dont select it then
}
@@ -2071,6 +2074,7 @@
}
gtk_label_set_use_underline (install_label, TRUE);
gtk_label_set_use_underline (remove_label, TRUE);
+
safeguard = false;
}
@@ -2102,7 +2106,6 @@
iters[i] = iter;
}
g_list_free (selected);
-
for (i = 0; i < selected_len; i++) {
GtkTreeIter *iter = &iters[i];
ZyppSelectablePtr sel = 0;
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org