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
=== modified file 'midori/midori-browser.c'
--- midori/midori-browser.c 2015-11-30 23:44:52 +0000
+++ midori/midori-browser.c 2015-12-12 23:05:31 +0000
@@ -5041,6 +5041,7 @@
5041 MidoriBrowser* browser)5041 MidoriBrowser* browser)
5042{5042{
5043 gboolean right_aligned = katze_object_get_boolean (panel, "right-aligned");5043 gboolean right_aligned = katze_object_get_boolean (panel, "right-aligned");
5044 gboolean panel_resizing = katze_object_get_boolean (browser->settings, "panel-resizing");
5044 GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);5045 GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);
5045 GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);5046 GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);
5046 gint paned_position = gtk_paned_get_position (GTK_PANED (hpaned));5047 gint paned_position = gtk_paned_get_position (GTK_PANED (hpaned));
@@ -5058,13 +5059,13 @@
5058 gtk_container_remove (GTK_CONTAINER (hpaned), vpaned);5059 gtk_container_remove (GTK_CONTAINER (hpaned), vpaned);
5059 if (right_aligned)5060 if (right_aligned)
5060 {5061 {
5061 gtk_paned_pack1 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);5062 gtk_paned_pack1 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
5062 gtk_paned_pack2 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);5063 gtk_paned_pack2 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
5063 }5064 }
5064 else5065 else
5065 {5066 {
5066 gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);5067 gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
5067 gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);5068 gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
5068 }5069 }
5069 gtk_paned_set_position (GTK_PANED (hpaned), paned_size - paned_position);5070 gtk_paned_set_position (GTK_PANED (hpaned), paned_size - paned_position);
5070 g_object_unref (browser->panel);5071 g_object_unref (browser->panel);
@@ -6241,11 +6242,13 @@
6241 "signal::close",6242 "signal::close",
6242 midori_panel_close_cb, browser,6243 midori_panel_close_cb, browser,
6243 NULL);6244 NULL);
6244 gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, FALSE);6245
6246 gboolean panel_resizing = katze_object_get_boolean (browser->settings, "panel-resizing");
6247 gtk_paned_pack1 (GTK_PANED (hpaned), browser->panel, FALSE, panel_resizing);
62456248
6246 /* Notebook, containing all views */6249 /* Notebook, containing all views */
6247 vpaned = gtk_vpaned_new ();6250 vpaned = gtk_vpaned_new ();
6248 gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, FALSE);6251 gtk_paned_pack2 (GTK_PANED (hpaned), vpaned, TRUE, panel_resizing);
6249 gtk_widget_show (vpaned);6252 gtk_widget_show (vpaned);
6250 browser->notebook = midori_notebook_new ();6253 browser->notebook = midori_notebook_new ();
62516254
@@ -6449,6 +6452,21 @@
6449}6452}
64506453
6451static void6454static void
6455midori_browser_set_panel_resizing (MidoriBrowser* browser,
6456 gboolean panel_resizing)
6457{
6458 GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);
6459 GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);
6460 GValue panel_resizing_value = G_VALUE_INIT;
6461 g_value_init (&panel_resizing_value, G_TYPE_BOOLEAN);
6462 g_value_set_boolean (&panel_resizing_value, panel_resizing);
6463
6464 /* Change shrink properties of children to allow more flexible resizing. */
6465 gtk_container_child_set_property (GTK_CONTAINER (hpaned), browser->panel, "shrink", &panel_resizing_value);
6466 gtk_container_child_set_property (GTK_CONTAINER (hpaned), vpaned, "shrink", &panel_resizing_value);
6467}
6468
6469static void
6452_midori_browser_update_settings (MidoriBrowser* browser)6470_midori_browser_update_settings (MidoriBrowser* browser)
6453{6471{
6454 gboolean remember_last_window_size;6472 gboolean remember_last_window_size;
@@ -6460,6 +6478,7 @@
6460 gboolean show_menubar, show_bookmarkbar;6478 gboolean show_menubar, show_bookmarkbar;
6461 gboolean show_panel;6479 gboolean show_panel;
6462 MidoriToolbarStyle toolbar_style;6480 MidoriToolbarStyle toolbar_style;
6481 gboolean panel_resizing;
6463 gchar* toolbar_items;6482 gchar* toolbar_items;
6464 gboolean close_buttons_left, close_buttons_on_tabs;6483 gboolean close_buttons_left, close_buttons_on_tabs;
64656484
@@ -6481,6 +6500,7 @@
6481 "show-statusbar", &browser->show_statusbar,6500 "show-statusbar", &browser->show_statusbar,
6482 "toolbar-style", &toolbar_style,6501 "toolbar-style", &toolbar_style,
6483 "toolbar-items", &toolbar_items,6502 "toolbar-items", &toolbar_items,
6503 "panel-resizing", &panel_resizing,
6484 "close-buttons-left", &close_buttons_left,6504 "close-buttons-left", &close_buttons_left,
6485 "close-buttons-on-tabs", &close_buttons_on_tabs,6505 "close-buttons-on-tabs", &close_buttons_on_tabs,
6486 "maximum-history-age", &browser->maximum_history_age,6506 "maximum-history-age", &browser->maximum_history_age,
@@ -6563,6 +6583,8 @@
6563 _action_set_active (browser, "Statusbar", browser->show_statusbar);6583 _action_set_active (browser, "Statusbar", browser->show_statusbar);
65646584
6565 g_free (toolbar_items);6585 g_free (toolbar_items);
6586
6587 midori_browser_set_panel_resizing (browser, panel_resizing);
6566}6588}
65676589
6568static void6590static void
@@ -6579,6 +6601,8 @@
65796601
6580 if (name == g_intern_string ("toolbar-style"))6602 if (name == g_intern_string ("toolbar-style"))
6581 _midori_browser_set_toolbar_style (browser, g_value_get_enum (&value));6603 _midori_browser_set_toolbar_style (browser, g_value_get_enum (&value));
6604 else if (name == g_intern_string ("panel-resizing"))
6605 midori_browser_set_panel_resizing (browser, g_value_get_boolean (&value));
6582 else if (name == g_intern_string ("toolbar-items"))6606 else if (name == g_intern_string ("toolbar-items"))
6583 midori_window_set_actions (MIDORI_WINDOW (browser), g_value_get_string (&value));6607 midori_window_set_actions (MIDORI_WINDOW (browser), g_value_get_string (&value));
6584 else if (name == g_intern_string ("compact-sidepanel"))6608 else if (name == g_intern_string ("compact-sidepanel"))
65856609
=== modified file 'midori/midori-preferences.c'
--- midori/midori-preferences.c 2015-07-06 21:26:46 +0000
+++ midori/midori-preferences.c 2015-12-12 23:05:31 +0000
@@ -478,6 +478,9 @@
478 button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);478 button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
479 gtk_button_set_label (GTK_BUTTON (button), _("Open tabs in the background"));479 gtk_button_set_label (GTK_BUTTON (button), _("Open tabs in the background"));
480 SPANNED_ADD (button);480 SPANNED_ADD (button);
481 button = katze_property_proxy (settings, "panel-resizing", NULL);
482 gtk_button_set_label (GTK_BUTTON (button), _("Allow arbitrary sidepanel resizing"));
483 INDENTED_ADD (button);
481484
482 /* Page "Network" */485 /* Page "Network" */
483 PAGE_NEW (GTK_STOCK_NETWORK, _("Network"));486 PAGE_NEW (GTK_STOCK_NETWORK, _("Network"));
484487
=== modified file 'midori/midori-websettings.c'
--- midori/midori-websettings.c 2015-11-22 19:28:16 +0000
+++ midori/midori-websettings.c 2015-12-12 23:05:31 +0000
@@ -48,6 +48,7 @@
48 MidoriSettings parent_instance;48 MidoriSettings parent_instance;
4949
50 MidoriToolbarStyle toolbar_style : 3;50 MidoriToolbarStyle toolbar_style : 3;
51 gboolean panel_resizing;
51 MidoriStartup load_on_startup : 2;52 MidoriStartup load_on_startup : 2;
52 MidoriNewTabType new_tab_type: 3;53 MidoriNewTabType new_tab_type: 3;
53 MidoriPreferredEncoding preferred_encoding : 3;54 MidoriPreferredEncoding preferred_encoding : 3;
@@ -83,6 +84,7 @@
83 PROP_0,84 PROP_0,
8485
85 PROP_TOOLBAR_STYLE,86 PROP_TOOLBAR_STYLE,
87 PROP_PANEL_RESIZING,
8688
87 PROP_LOAD_ON_STARTUP,89 PROP_LOAD_ON_STARTUP,
88 PROP_NEW_TAB,90 PROP_NEW_TAB,
@@ -321,6 +323,15 @@
321 flags));323 flags));
322324
323 g_object_class_install_property (gobject_class,325 g_object_class_install_property (gobject_class,
326 PROP_PANEL_RESIZING,
327 g_param_spec_boolean (
328 "panel-resizing",
329 "Allow arbitrary sidepanel resizing",
330 "Whether the sidepanel can be shrinked further",
331 FALSE,
332 flags));
333
334 g_object_class_install_property (gobject_class,
324 PROP_LOAD_ON_STARTUP,335 PROP_LOAD_ON_STARTUP,
325 g_param_spec_enum (336 g_param_spec_enum (
326 "load-on-startup",337 "load-on-startup",
@@ -998,6 +1009,9 @@
998 web_settings->toolbar_style = g_value_get_enum (value);1009 web_settings->toolbar_style = g_value_get_enum (value);
999 break;1010 break;
10001011
1012 case PROP_PANEL_RESIZING:
1013 web_settings->panel_resizing = g_value_get_boolean (value);
1014 break;
1001 case PROP_LOAD_ON_STARTUP:1015 case PROP_LOAD_ON_STARTUP:
1002 web_settings->load_on_startup = g_value_get_enum (value);1016 web_settings->load_on_startup = g_value_get_enum (value);
1003 break;1017 break;
@@ -1159,6 +1173,10 @@
1159 g_value_set_enum (value, web_settings->toolbar_style);1173 g_value_set_enum (value, web_settings->toolbar_style);
1160 break;1174 break;
11611175
1176 case PROP_PANEL_RESIZING:
1177 g_value_set_boolean (value, web_settings->panel_resizing);
1178 break;
1179
1162 case PROP_LOAD_ON_STARTUP:1180 case PROP_LOAD_ON_STARTUP:
1163 g_value_set_enum (value, web_settings->load_on_startup);1181 g_value_set_enum (value, web_settings->load_on_startup);
1164 break;1182 break;

Subscribers

People subscribed via source and target branches

to all changes: