[polari] userList: Switch ScrolledWindow / Stack for user list



commit 315849a95ef5fd8d90981893b3fe62700923e66c
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Jul 25 19:38:51 2013 +0200

    userList: Switch ScrolledWindow / Stack for user list
    
    We don't want to scroll over the maximum number of users in any
    room, but the ones from the current one. No idea how I ended up
    with that code in the first place ...

 data/resources/main-window.ui |    5 ++---
 src/chatView.js               |    2 +-
 src/mainWindow.js             |    4 +---
 src/userList.js               |   24 ++++++++++++++----------
 4 files changed, 18 insertions(+), 17 deletions(-)
---
diff --git a/data/resources/main-window.ui b/data/resources/main-window.ui
index fa6b1b0..0364133 100644
--- a/data/resources/main-window.ui
+++ b/data/resources/main-window.ui
@@ -187,11 +187,10 @@
                     <property name="hexpand">False</property>
                     <property name="transition_type">slide-left</property>
                     <child>
-                      <object class="GtkScrolledWindow" id="user_list_scrollview">
+                      <object class="GtkStack" id="user_list_stack">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">never</property>
-                        <property name="shadow_type">in</property>
+                        <property name="transition_type">crossfade</property>
                         <child>
                           <placeholder/>
                         </child>
diff --git a/src/chatView.js b/src/chatView.js
index d9dc715..9fb20be 100644
--- a/src/chatView.js
+++ b/src/chatView.js
@@ -174,7 +174,7 @@ const ChatView = new Lang.Class({
             this._room.disconnect(this._roomSignals[i]);
         this._roomSignals = [];
 
-        if (this._room.channel) {
+        if (!this._room.channel.get_invalidated()) {
             let app = Gio.Application.get_default();
             app.hold();
             this._room.channel.connect('invalidated',
diff --git a/src/mainWindow.js b/src/mainWindow.js
index 5422432..4d559d7 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -70,9 +70,7 @@ const MainWindow = new Lang.Class({
         this._roomList = new RoomList.RoomList();
         scroll.add(this._roomList.widget);
 
-        scroll = builder.get_object('user_list_scrollview');
-        this._userListStack = new Gtk.Stack();
-        scroll.add(this._userListStack);
+        this._userListStack = builder.get_object('user_list_stack');
 
         let revealer = builder.get_object('user_list_revealer');
         app.connect('action-state-changed::user-list', Lang.bind(this,
diff --git a/src/userList.js b/src/userList.js
index 4ac7173..870f981 100644
--- a/src/userList.js
+++ b/src/userList.js
@@ -8,20 +8,24 @@ const UserList = new Lang.Class({
     Name: 'UserList',
 
     _init: function(room) {
-        this.widget = new Gtk.ListBox();
+        this.widget = new Gtk.ScrolledWindow();
+        this.widget.hscrollbar_policy = Gtk.PolicyType.NEVER;
 
         this.widget.set_size_request(150, -1);
 
-        this.widget.set_selection_mode(Gtk.SelectionMode.NONE);
-        this.widget.set_header_func(Lang.bind(this, this._updateHeader));
-        this.widget.set_sort_func(Lang.bind(this, this._sort));
+        this._list = new Gtk.ListBox();
+        this.widget.add(this._list);
+
+        this._list.set_selection_mode(Gtk.SelectionMode.NONE);
+        this._list.set_header_func(Lang.bind(this, this._updateHeader));
+        this._list.set_sort_func(Lang.bind(this, this._sort));
 
         this._room = room;
 
         /* tmp - use a stylesheet instead */
         let bg = new Gdk.RGBA();
         bg.parse("#eee");
-        this.widget.override_background_color(0, bg);
+        this._list.override_background_color(0, bg);
 
 
         room.connect('member-renamed',
@@ -70,15 +74,15 @@ const UserList = new Lang.Class({
                                 ellipsize: Pango.EllipsizeMode.END }));
         row.add(box);
         row.show_all();
-        this.widget.add(row);
+        this._list.add(row);
     },
 
     _removeMember: function(member) {
-        let rows = this.widget.get_children();
+        let rows = this._list.get_children();
         for (let i = 0; i < rows.length; i++) {
             if (rows[i]._member != member)
                 continue;
-            this.widget.remove(rows[i]);
+            this._list.remove(rows[i]);
             break;
         }
     },
@@ -88,12 +92,12 @@ const UserList = new Lang.Class({
     },
 
     _updateHeader: function(row, before) {
-        let numMembers = this.widget.get_children().length;
+        let numMembers = this._list.get_children().length;
 
         if (before)
             row.set_header(null);
 
-        let header = this.widget.get_row_at_index(0).get_header();
+        let header = this._list.get_row_at_index(0).get_header();
         if (header) {
             header._counterLabel.label = numMembers.toString();
             return;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]