[yast-commit] r63800 - in /trunk/gtk: VERSION VERSION.cmake package/yast2-gtk.changes src/YGTreeView.cc src/YGUI.h src/pkg/ygtkpkgdetailview.cc
Author: rpmcruz Date: Sat Apr 16 14:57:30 2011 New Revision: 63800 URL: http://svn.opensuse.org/viewcvs/yast?rev=63800&view=rev Log: -Tree: support `recursiveSelection flag -ygtkpkgdetailview: code simplification Modified: trunk/gtk/VERSION trunk/gtk/VERSION.cmake trunk/gtk/package/yast2-gtk.changes trunk/gtk/src/YGTreeView.cc trunk/gtk/src/YGUI.h trunk/gtk/src/pkg/ygtkpkgdetailview.cc Modified: trunk/gtk/VERSION URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/VERSION?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/VERSION (original) +++ trunk/gtk/VERSION Sat Apr 16 14:57:30 2011 @@ -1 +1 @@ -2.21.95 +2.21.96 Modified: trunk/gtk/VERSION.cmake URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/VERSION.cmake?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/VERSION.cmake (original) +++ trunk/gtk/VERSION.cmake Sat Apr 16 14:57:30 2011 @@ -1,3 +1,3 @@ SET(VERSION_MAJOR "2") SET(VERSION_MINOR "21") -SET(VERSION_PATCH "95") +SET(VERSION_PATCH "96") Modified: trunk/gtk/package/yast2-gtk.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/package/yast2-gtk.changes?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/package/yast2-gtk.changes (original) +++ trunk/gtk/package/yast2-gtk.changes Sat Apr 16 14:57:30 2011 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Sat Apr 16 13:51:00 WET 2011 - rpmcruz@alunos.dcc.fc.up.pt + +- 2.21.96 +- Tree widget: add recursiveSelection flag from yast2-libyui +2.20.3. + +------------------------------------------------------------------- Fri Apr 15 20:45:00 WET 2011 - rpmcruz@alunos.dcc.fc.up.pt - 2.21.95 Modified: trunk/gtk/src/YGTreeView.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGTreeView.cc?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/src/YGTreeView.cc (original) +++ trunk/gtk/src/YGTreeView.cc Sat Apr 16 14:57:30 2011 @@ -202,18 +202,33 @@ virtual bool _immediateMode() { return true; } virtual bool _shrinkable() { return false; } + virtual bool _recursiveSelection() { return false; } + + void setMark (GtkTreeIter *iter, YItem *yitem, gint column, bool state, bool recursive) + { + setRowMark (iter, column, state); + yitem->setSelected (state); + + if (recursive) + for (YItemConstIterator it = yitem->childrenBegin(); + it != yitem->childrenEnd(); it++) { + GtkTreeIter _iter; + getTreeIter (*it, &_iter); + setMark (&_iter, *it, column, state, true); + } + } void toggleMark (GtkTreePath *path, gint column) { GtkTreeIter iter; if (!gtk_tree_model_get_iter (getModel(), &iter, path)) return; - gboolean state; gtk_tree_model_get (getModel(), &iter, column, &state, -1); state = !state; - setRowMark (&iter, column, state); - getYItem (&iter)->setSelected (state); + + YItem *yitem = getYItem (&iter); + setMark (&iter, yitem, column, state, _recursiveSelection()); syncCount(); emitEvent (YEvent::ValueChanged); } @@ -641,6 +656,10 @@ class YGTree : public YTree, public YGTreeView { public: +#if YAST2_VERSION >= 2020003 + YGTree (YWidget *parent, const string &label, bool multiselection, bool recursiveSelection) + : YTree (NULL, label, multiselection, recursiveSelection), +#else #if YAST2_VERSION >= 2019002 YGTree (YWidget *parent, const string &label, bool multiselection) : YTree (NULL, label, multiselection), @@ -648,6 +667,7 @@ YGTree (YWidget *parent, const string &label) : YTree (NULL, label), #endif +#endif YGTreeView (this, parent, label, true) { #if YAST2_VERSION >= 2019002 @@ -671,6 +691,10 @@ g_signal_connect (getWidget(), "row-expanded", G_CALLBACK (row_expanded_cb), this); } +#if YAST2_VERSION >= 2020003 + virtual bool _recursiveSelection() { return recursiveSelection(); } +#endif + void addNode (YItem *item, GtkTreeIter *parent) { GtkTreeIter iter; @@ -750,6 +774,19 @@ virtual YTreeItem *currentItem() { return (YTreeItem *) getFocusItem(); } + void _markItem (YItem *item, bool select, bool recursive) { + GtkTreeIter iter; + getTreeIter (item, &iter); + setRowMark (&iter, 2, select); + + if (recursive) { + YTreeItem *_item = (YTreeItem *) item; + for (YItemConstIterator it = _item->childrenBegin(); + it != _item->childrenEnd(); it++) + _markItem (*it, select, true); + } + } + // YGSelectionStore void doAddItem (YItem *item) {} // rebuild will be called anyway @@ -758,9 +795,11 @@ { #if YAST2_VERSION >= 2019002 if (hasMultiSelection()) { - GtkTreeIter iter; - getTreeIter (item, &iter); - setRowMark (&iter, 2, select); +#if YAST2_VERSION >= 2020003 + _markItem (item, select, recursiveSelection()); +#else + _markItem (item, select, false); +#endif syncCount(); } else @@ -816,6 +855,10 @@ YGSELECTION_WIDGET_IMPL (YTree) }; +#if YAST2_VERSION >= 2020003 +YTree *YGWidgetFactory::createTree (YWidget *parent, const string &label, bool multiselection, bool recursiveSelection) +{ return new YGTree (parent, label, multiselection, recursiveSelection); } +#else #if YAST2_VERSION >= 2019002 YTree *YGWidgetFactory::createTree (YWidget *parent, const string &label, bool multiselection) { return new YGTree (parent, label, multiselection); } @@ -823,4 +866,5 @@ YTree *YGWidgetFactory::createTree (YWidget *parent, const string &label) { return new YGTree (parent, label); } #endif +#endif Modified: trunk/gtk/src/YGUI.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGUI.h?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/src/YGUI.h (original) +++ trunk/gtk/src/YGUI.h Sat Apr 16 14:57:30 2011 @@ -89,11 +89,15 @@ virtual YRadioButton *createRadioButton (YWidget *parent, const string &label, bool isChecked); virtual YComboBox *createComboBox (YWidget *parent, const string & label, bool editable); virtual YSelectionBox *createSelectionBox (YWidget *parent, const string &label); +#if YAST2_VERSION >= 2020003 + virtual YTree *createTree (YWidget *parent, const string &label, bool multiselection, bool recursiveSelection); +#else #if YAST2_VERSION >= 2019002 virtual YTree *createTree (YWidget *parent, const string &label, bool multiselection); #else virtual YTree *createTree (YWidget *parent, const string &label); #endif +#endif virtual YTable *createTable (YWidget *parent, YTableHeader *headers, bool multiSelection); virtual YProgressBar *createProgressBar (YWidget *parent, const string &label, int maxValue); virtual YBusyIndicator *createBusyIndicator (YWidget *parent, const string &label, int timeout); Modified: trunk/gtk/src/pkg/ygtkpkgdetailview.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgdetailview.cc?rev=63800&r1=63799&r2=63800&view=diff ============================================================================== --- trunk/gtk/src/pkg/ygtkpkgdetailview.cc (original) +++ trunk/gtk/src/pkg/ygtkpkgdetailview.cc Sat Apr 16 14:57:30 2011 @@ -1277,21 +1277,18 @@ gtk_adjustment_set_value (adj, value); } - static void fix_keybindings (GtkWidget *scroll, GtkWidget *widget) + static void fix_keys (GtkWidget *widget, void *_scroll) { + GtkWidget *scroll = (GtkWidget *) _scroll; if (GTK_IS_TEXT_VIEW (widget)) g_signal_connect (G_OBJECT (widget), "move-cursor", G_CALLBACK (move_cursor_cb), scroll); - else if (GTK_IS_CONTAINER (widget)) { - GList *children = gtk_container_get_children (GTK_CONTAINER (widget)); - for (GList *i = children; i; i = i->next) - fix_keybindings (scroll, (GtkWidget *) i->data); - g_list_free (children); - } + else if (GTK_IS_CONTAINER (widget)) + gtk_container_foreach (GTK_CONTAINER (widget), fix_keys, _scroll); } static void scroll_realize_cb (GtkWidget *widget, Impl *pThis) - { fix_keybindings (widget, widget); } + { fix_keys (widget, widget); } }; YGtkPkgDetailView::YGtkPkgDetailView() -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
rpmcruz@svn2.opensuse.org