GNOME Bugzilla – Bug 586145
Side Tabs
Last modified: 2018-05-22 13:31:25 UTC
I'd like to request a feature: One feature that Pidgin has, and that some people feel strongly about, is the ability to have chat tabs appear on the side of the pane instead of the top.
Rather than side tabs, why not a treeview (à la xchat)?
I'm not familiar with the tree view as used in xchat, but some quick googling makes me think that it doesn't provide the same functionality as the side tabs I was referring to. In this case, I simply mean that in the chat window, it would be nice to be able to switch between multiple ongoing chats with different people by selecting tabs located on the side rather than the top. I can't think of hierarchical structure that would apply to that.
*** Bug 595376 has been marked as a duplicate of this bug. ***
I cannot seem to be able to rename this bug. Could be called option to turn around empathy chat window to have tabs vertically on the left side of the window (aka side tabs) I searched for this bug before filing mine but I couldn't find it.
Is there any progress on this feature? It's surely pretty easy to implement and it would make Empathy massively more useful to me at least. With the tabs at the top it's unusable once you've got about 4 tabs.
Created attachment 192846 [details] [review] Add a preference for setting the tab position on chat windows This adds a GSetting with the corresponding control in the preferences dialog to choose the position of the tabs in a chat window. This is useful so that the user can position the tabs vertically which allows a lot more channels to be displayed before scrolling is needed. The setting is stored as an new enum type. This needs support from the gsettings build rules which needs an updated gsettings.m4. This patch copies in the latest version from glib.
Created attachment 192847 [details] [review] Add a preference for setting the tab position on chat windows Minor fix, oops
Created attachment 193418 [details] [review] empathy-chat-window: Don't expand tabs when they are vertical When the tabs are displayed on the left or right of the window, the 'expand' and 'fill' properties are set to FALSE. Otherwise it looks really ugly when there are only a few tabs and they are made really tall. The window listens to notifications on the 'tab-pos' property for the notebook so it can update the properties on the tabs.
Review of attachment 192847 [details] [review]: While I can appreciate the use of side tabs so you can display more names, I'm not that wild about a preference that adds 4 options for displaying your tabs. I think I'd strongly prefer simple Top and Left. Please separate the upgrade of gsettings.m4 into a separate patch. Alternatively, do we even need this any more? Can we just use the system version? ::: data/Makefile.am @@ +74,3 @@ $(gsettings_files) \ + $(gsettings_ENUM_FILES) \ + $(srcdir)/org.gnome.Empathy.enums.xml \ Is this stored in a variable we can use? ::: data/empathy-enums.h @@ +21,3 @@ +#ifndef __EMPATHY_ENUMS_H__ +#define __EMPATHY_ENUMS_H__ + G_BEGIN_DECLS @@ +29,3 @@ + EMPATY_TAB_POSITION_BOTTOM +} EmpathyTabPosition; + G_END_DECLS
Review of attachment 192847 [details] [review]: ::: data/empathy-enums.h @@ +28,3 @@ + EMPATY_TAB_POSITION_TOP, + EMPATY_TAB_POSITION_BOTTOM +} EmpathyTabPosition; Also, we should point out this is the same as GtkPositionType, or better still, can we use GtkPositionType instead of defining our own enum?
Review of attachment 193418 [details] [review]: ::: src/empathy-chat-window.c @@ +1958,3 @@ + * vertical */ + + Don't need this GValue (see below). @@ +1977,3 @@ + gtk_container_child_set_property (GTK_CONTAINER (priv->notebook), + GTK_WIDGET (chat), + case GTK_POS_LEFT: gtk_container_child_set (notebook, chat "tab-expand", expand, "tab-fill", fill, NULL);
Thanks for the review. I'm just about to push some updated patches. It does seem to work to just delete gsettings.m4 so that it will pick up the one installed by glib instead so I've added a third patch to do that. I've removed the 'right' and 'bottom' options from the UI but left them in for the configuration option seeing as it doesn't seem to do any harm there. I wonder if we should even consider not having the option at all in the UI and just make people set it from dconf? It is kind of an esoteric option. Or maybe we could do something even smarter and automatically switch to side tabs whenever having the tabs at the top would make it scroll. It seems to me that it's never really useful to have scrolling tabs as the tabs are needed for a quick glance to see what channels have new messages. If we could just get it to switch automatically then it would just 'do the right thing'. Any thoughts? > Is this stored in a variable we can use? It doesn't automatically get put in a variable but I suppose we could make one. It seems to work to not bother disting the file however so I've just removed that from the patch. This matches what gnome-settings-daemon does. > Also, we should point out this is the same as GtkPositionType, or > better still, can we use GtkPositionType instead of defining our own > enum? I've added a comment about that. To use GtkPositionType we would have to get GTK to install an enum spec for it which it doesn't currently do. It might be worth asking them if they could do that? > G_BEGIN_DECLS I don't think it makes sense to add this because the header doesn't declare any functions. Also the header is never actually included anywhere - it's solely used as something to pass to gsettings_ENUM_FILES. G_BEGIN_DECLS is only really needed for public headers so that it can be compiled with C++, right? I just copied what gnome-settings-daemon does. > Don't need this GValue (see below). Ok, I've changed it like you suggested. The GValue was just there because that's what the old code did.
Created attachment 193508 [details] [review] Remove m4/gsettings.m4 The copy of gsettings.m4 included in the git repo is out of date so it does not support generating enum files. This patch just removes the file so that aclocal will use the one installed by glib instead.
Created attachment 193509 [details] [review] Add a preference for setting the tab position on chat windows Updated patch
Created attachment 193510 [details] [review] empathy-chat-window: Don't expand tabs when they are vertical Updated patch
Codewise this is fine. Guillaume, what do you think about having the preference appear in the UI? Or as a hidden preference?
(In reply to comment #16) > Guillaume, what do you think about having the preference appear in the UI? Or > as a hidden preference? I don't really have a strong opinion on this. I wouldn't mind adding a preference, I think.
Ping. Any news on the patches? As far as I understand from the messages everyone is happy for them to be committed? The gsettings.m4 patch conflicts with the one landed in bug 659377 but I guess we can just skip that patch if the local copy has been updated anyway. It seems like it would make sense to just delete it though.
We are currently in hard code freeze so those patches can't be merged until we branch for 3.2 (should be soon). I tried your branch and hit this error when opening the preferences dialog: ** (empathy:21253): CRITICAL **: GtkBuilder Error (/home/cassidy/gnome/empathy/src/empathy-preferences.ui): Duplicate object ID 'box1' on line 634 (previously on line 91) Anyway, as GNOME 3 is moving to offering a more coherent user experience and reducing UI preferences, I think we shouldn't add a preferences right now, at least until we got some input from design guys. We can keep the gsettings as a 'advanced/hidden' option though. Maybe that could be an option in gnome-tweak-tool?
Created attachment 197830 [details] [review] Add a GSetting to change the tab position on chat windows I've combined the two patches into one and removed the UI side of it. The GSettings patch should no longer be needed.
Review of attachment 197830 [details] [review]: So tried your branch and now get this error when starting empathy or empathy-chat. GLib-GIO-CRITICAL **: Settings schema 'org.gnome.Empathy.conversation' is not installed So I guess there is something wrong in your schema. <key name="tab-position" enum="org.gnome.Empathy.EmpathyTabPosition"> Are you sure that's correct? Shouldn't we define a 'type' attribute as well? I didn't find the doc to deal with such enum in gsettings.
Created attachment 272280 [details] [review] empathy-chat: enable different tab positions Fixes:
This patch was getting rotten here and I'm also interested in side tabs. I've just removed the split enumeration file and add the enumeration itself into the GSettings schema file.
Created attachment 272283 [details] [review] empathy-chat: Add a GSetting to change the tab position on chat windows Based on the previous work by Neil Roberts <neil@linux.intel.com>. This adds a GSetting to choose the position of the tabs in a chat window. This is useful so that the user can position the tabs vertically which allows a lot more channels to be displayed before scrolling is needed. There is no corresponding preference for the setting on the assumption that it is a bit of an obscure feature. Fixes:
Comment on attachment 272283 [details] [review] empathy-chat: Add a GSetting to change the tab position on chat windows Actually, let's give Neil the credit for this patch.
(In reply to comment #24) > This adds a GSetting to choose the position of the tabs in a chat > window. This is useful so that the user can position the tabs > vertically which allows a lot more channels to be displayed before > scrolling is needed. There is no corresponding preference for the > setting on the assumption that it is a bit of an obscure feature. Thanks, Andres, worked for me perfectly. Can the tabs pane also be resizable?
(In reply to comment #26) > (In reply to comment #24) > > This adds a GSetting to choose the position of the tabs in a chat > > window. This is useful so that the user can position the tabs > > vertically which allows a lot more channels to be displayed before > > scrolling is needed. There is no corresponding preference for the > > setting on the assumption that it is a bit of an obscure feature. > Thanks, Andres, worked for me perfectly. Can the tabs pane also be resizable? Actually, not :(. See bug 727383.
I've recompiled with the attachment 272283 [details] [review] and it worked fine. Would it be possible to have this feature in next release.
Please merge this. This feature is essential for anyone with a high number of chat rooms!
Pinging again about this bug. I can push this patch but I would really appreciate some of empathy developers to review and mark as "commit-now" first.
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/empathy/issues/79.