Merge lp:~muesli4-2/midori/panel-resizing into lp:midori

Proposed by Moritz Bruder
Status: Needs review
Proposed branch: lp:~muesli4-2/midori/panel-resizing
Merge into: lp:midori
Diff against target: 172 lines (+51/-6)
3 files modified
midori/midori-browser.c (+30/-6)
midori/midori-preferences.c (+3/-0)
midori/midori-websettings.c (+18/-0)
To merge this branch: bzr merge lp:~muesli4-2/midori/panel-resizing
Reviewer Review Type Date Requested Status
gue5t gue5t Needs Information
Review via email: mp+280399@code.launchpad.net

Description of the change

I changed the way the side panel and the *vpaned* (containing the webview) are added to and contained within the *hpaned*. In particular, I changed the "shrink" property to allow the side panel to shrink further.

I added an option within the preferences, which is disabled by default but stored within the settings once enabled! (I hope I didn't forget anything, but works flawless on my machine.)

Especially on netbooks with small screen this is absolutely necessary, when using vertical tabs.

To post a comment you must log in.
Revision history for this message
Moritz Bruder (muesli4-2) wrote :

I found out that the "last-panel-position" property, which was already in the code, is not saved for the next session.

This leads sometimes to unpredictable positions. I guess it would be best to install the property in the MidoriWebSettings class. I could do this, but I would like to hear your thoughts on the issue.

Revision history for this message
Paweł Forysiuk (tuxator) wrote :

Any particular scenario for notebook case? For example what size browser should be there?

Revision history for this message
Moritz Bruder (muesli4-2) wrote :

> Any particular scenario for notebook case? For example what size browser
> should be there?

My netbook has a resolution of 1024x600, the vertical side panel in its minimal width takes almost 1/3 of the screen. Furthermore I don't see any reason to limit it.

Revision history for this message
gue5t gue5t (gue5t) wrote :

Allowing to shrink the sidepanel for small screens seems completely reasonable.

I think the preference for whether to allow shrinking or not is probably unnecessary. Unchecking the checkbox doesn't seem to help users with small screens (who need it checked) nor users with large screens (who will simply not shrink the sidepanel so much). Or am I missing something?

The last-panel-position thing can probably be addressed in a separate branch or on top of this one.

review: Needs Information

Unmerged revisions

7072. By Moritz Bruder

Added flexible resizing support for the side panel (with an opt-in setting, default is still the same).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'midori/midori-browser.c'
2--- midori/midori-browser.c 2015-11-30 23:44:52 +0000
3+++ midori/midori-browser.c 2015-12-12 23:05:31 +0000
4@@ -5041,6 +5041,7 @@
5 MidoriBrowser* browser)
6 {
7 gboolean right_aligned = katze_object_get_boolean (panel, "right-aligned");
8+ gboolean panel_resizing = katze_object_get_boolean (browser->settings, "panel-resizing");
9 GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);
10 GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);
11 gint paned_position = gtk_paned_get_position (GTK_PANED (hpaned));
12@@ -5058,13 +5059,13 @@
13 gtk_container_remove (GTK_CONTAINER (hpaned), vpaned);
14 if (right_aligned)
15 {
16- gtk_paned_pack1 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);
17- gtk_paned_pack2 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);
18+ gtk_paned_pack1 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
19+ gtk_paned_pack2 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
20 }
21 else
22 {
23- gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);
24- gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);
25+ gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
26+ gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
27 }
28 gtk_paned_set_position (GTK_PANED (hpaned), paned_size - paned_position);
29 g_object_unref (browser->panel);
30@@ -6241,11 +6242,13 @@
31 "signal::close",
32 midori_panel_close_cb, browser,
33 NULL);
34- gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);
35+
36+ gboolean panel_resizing = katze_object_get_boolean (browser->settings, "panel-resizing");
37+ gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
38
39 /* Notebook, containing all views */
40 vpaned = gtk_vpaned_new ();
41- gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);
42+ gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
43 gtk_widget_show (vpaned);
44 browser->notebook = midori_notebook_new ();
45
46@@ -6449,6 +6452,21 @@
47 }
48
49 static void
50+midori_browser_set_panel_resizing (MidoriBrowser* browser,
51+ gboolean panel_resizing)
52+{
53+ GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);
54+ GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);
55+ GValue panel_resizing_value = G_VALUE_INIT;
56+ g_value_init (&panel_resizing_value, G_TYPE_BOOLEAN);
57+ g_value_set_boolean (&panel_resizing_value, panel_resizing);
58+
59+ /* Change shrink properties of children to allow more flexible resizing. */
60+ gtk_container_child_set_property (GTK_CONTAINER (hpaned), browser->panel, "shrink", &panel_resizing_value);
61+ gtk_container_child_set_property (GTK_CONTAINER (hpaned), vpaned, "shrink", &panel_resizing_value);
62+}
63+
64+static void
65 _midori_browser_update_settings (MidoriBrowser* browser)
66 {
67 gboolean remember_last_window_size;
68@@ -6460,6 +6478,7 @@
69 gboolean show_menubar, show_bookmarkbar;
70 gboolean show_panel;
71 MidoriToolbarStyle toolbar_style;
72+ gboolean panel_resizing;
73 gchar* toolbar_items;
74 gboolean close_buttons_left, close_buttons_on_tabs;
75
76@@ -6481,6 +6500,7 @@
77 "show-statusbar", &browser->show_statusbar,
78 "toolbar-style", &toolbar_style,
79 "toolbar-items", &toolbar_items,
80+ "panel-resizing", &panel_resizing,
81 "close-buttons-left", &close_buttons_left,
82 "close-buttons-on-tabs", &close_buttons_on_tabs,
83 "maximum-history-age", &browser->maximum_history_age,
84@@ -6563,6 +6583,8 @@
85 _action_set_active (browser, "Statusbar", browser->show_statusbar);
86
87 g_free (toolbar_items);
88+
89+ midori_browser_set_panel_resizing (browser, panel_resizing);
90 }
91
92 static void
93@@ -6579,6 +6601,8 @@
94
95 if (name == g_intern_string ("toolbar-style"))
96 _midori_browser_set_toolbar_style (browser, g_value_get_enum (&value));
97+ else if (name == g_intern_string ("panel-resizing"))
98+ midori_browser_set_panel_resizing (browser, g_value_get_boolean (&value));
99 else if (name == g_intern_string ("toolbar-items"))
100 midori_window_set_actions (MIDORI_WINDOW (browser), g_value_get_string (&value));
101 else if (name == g_intern_string ("compact-sidepanel"))
102
103=== modified file 'midori/midori-preferences.c'
104--- midori/midori-preferences.c 2015-07-06 21:26:46 +0000
105+++ midori/midori-preferences.c 2015-12-12 23:05:31 +0000
106@@ -478,6 +478,9 @@
107 button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
108 gtk_button_set_label (GTK_BUTTON (button), _("Open tabs in the background"));
109 SPANNED_ADD (button);
110+ button = katze_property_proxy (settings, "panel-resizing", NULL);
111+ gtk_button_set_label (GTK_BUTTON (button), _("Allow arbitrary sidepanel resizing"));
112+ INDENTED_ADD (button);
113
114 /* Page "Network" */
115 PAGE_NEW (GTK_STOCK_NETWORK, _("Network"));
116
117=== modified file 'midori/midori-websettings.c'
118--- midori/midori-websettings.c 2015-11-22 19:28:16 +0000
119+++ midori/midori-websettings.c 2015-12-12 23:05:31 +0000
120@@ -48,6 +48,7 @@
121 MidoriSettings parent_instance;
122
123 MidoriToolbarStyle toolbar_style : 3;
124+ gboolean panel_resizing;
125 MidoriStartup load_on_startup : 2;
126 MidoriNewTabType new_tab_type: 3;
127 MidoriPreferredEncoding preferred_encoding : 3;
128@@ -83,6 +84,7 @@
129 PROP_0,
130
131 PROP_TOOLBAR_STYLE,
132+ PROP_PANEL_RESIZING,
133
134 PROP_LOAD_ON_STARTUP,
135 PROP_NEW_TAB,
136@@ -321,6 +323,15 @@
137 flags));
138
139 g_object_class_install_property (gobject_class,
140+ PROP_PANEL_RESIZING,
141+ g_param_spec_boolean (
142+ "panel-resizing",
143+ "Allow arbitrary sidepanel resizing",
144+ "Whether the sidepanel can be shrinked further",
145+ FALSE,
146+ flags));
147+
148+ g_object_class_install_property (gobject_class,
149 PROP_LOAD_ON_STARTUP,
150 g_param_spec_enum (
151 "load-on-startup",
152@@ -998,6 +1009,9 @@
153 web_settings->toolbar_style = g_value_get_enum (value);
154 break;
155
156+ case PROP_PANEL_RESIZING:
157+ web_settings->panel_resizing = g_value_get_boolean (value);
158+ break;
159 case PROP_LOAD_ON_STARTUP:
160 web_settings->load_on_startup = g_value_get_enum (value);
161 break;
162@@ -1159,6 +1173,10 @@
163 g_value_set_enum (value, web_settings->toolbar_style);
164 break;
165
166+ case PROP_PANEL_RESIZING:
167+ g_value_set_boolean (value, web_settings->panel_resizing);
168+ break;
169+
170 case PROP_LOAD_ON_STARTUP:
171 g_value_set_enum (value, web_settings->load_on_startup);
172 break;

Subscribers

People subscribed via source and target branches

to all changes: