Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2005-02-24 14:41:46 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-02-24 14:41:46 (GMT)
commit7ed6744f29a2ffeebf8775473adedb521995a211 (patch)
treeaa0cd3ebfd17f68dc605e332a1624e407c129b34 /shell
parentd9287d50a37a7d20a060c2059f3659dd9a99143b (diff)
Fix size toggle buttons behavior
2005-02-24 Marco Pesenti Gritti <marco@gnome.org> * shell/ev-window.c: (ev_window_cmd_view_best_fit), (ev_window_cmd_view_page_width), (update_sizing_buttons), (ev_window_cmd_view_normal_size): Fix size toggle buttons behavior
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-window.c107
1 files changed, 43 insertions, 64 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index dc88f70..8477307 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -278,30 +278,59 @@ update_chrome_flag (EvWindow *window, EvChrome flag, const char *pref, gboolean
}
static void
-update_sizing_buttons (EvWindow *ev_window)
+ev_window_cmd_view_best_fit (GtkAction *action, EvWindow *ev_window)
{
- GtkWidget *best_fit;
- GtkWidget *fit_width;
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) {
+ ev_window_set_sizing_mode (ev_window, EV_SIZING_BEST_FIT);
+ } else {
+ ev_window_set_sizing_mode (ev_window, EV_SIZING_FREE);
+ }
+}
- best_fit = gtk_ui_manager_get_widget (ev_window->priv->ui_manager,
- "/ToolBar/ViewBestFit");
- fit_width = gtk_ui_manager_get_widget (ev_window->priv->ui_manager,
- "/ToolBar/ViewPageWidth");
+static void
+ev_window_cmd_view_page_width (GtkAction *action, EvWindow *ev_window)
+{
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) {
+ ev_window_set_sizing_mode (ev_window, EV_SIZING_FIT_WIDTH);
+ } else {
+ ev_window_set_sizing_mode (ev_window, EV_SIZING_FREE);
+ }
+}
+
+static void
+update_sizing_buttons (EvWindow *window)
+{
+ GtkActionGroup *action_group = window->priv->action_group;
+ GtkAction *action;
+ gboolean best_fit, page_width;
- switch (ev_window->priv->sizing_mode) {
+ switch (window->priv->sizing_mode) {
case EV_SIZING_BEST_FIT:
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (best_fit), TRUE);
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (fit_width), FALSE);
+ best_fit = TRUE;
+ page_width = FALSE;
break;
case EV_SIZING_FIT_WIDTH:
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (best_fit), FALSE);
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (fit_width), TRUE);
+ best_fit = FALSE;
+ page_width = TRUE;
break;
case EV_SIZING_FREE:
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (best_fit), FALSE);
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (fit_width), FALSE);
+ best_fit = page_width = FALSE;
break;
}
+
+ action = gtk_action_group_get_action (action_group, "ViewBestFit");
+ g_signal_handlers_block_by_func
+ (action, G_CALLBACK (ev_window_cmd_view_best_fit), window);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), best_fit);
+ g_signal_handlers_unblock_by_func
+ (action, G_CALLBACK (ev_window_cmd_view_best_fit), window);
+
+ action = gtk_action_group_get_action (action_group, "ViewPageWidth");
+ g_signal_handlers_block_by_func
+ (action, G_CALLBACK (ev_window_cmd_view_page_width), window);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), page_width);
+ g_signal_handlers_unblock_by_func
+ (action, G_CALLBACK (ev_window_cmd_view_page_width), window);
}
void
@@ -1377,56 +1406,6 @@ ev_window_cmd_view_normal_size (GtkAction *action, EvWindow *ev_window)
}
static void
-ev_window_cmd_view_best_fit (GtkAction *action, EvWindow *ev_window)
-{
- EvWindowPrivate *priv = ev_window->priv;
- GtkWidget *button;
-
- g_return_if_fail (EV_IS_WINDOW (ev_window));
-
- button = gtk_ui_manager_get_widget (priv->ui_manager, "/ToolBar/ViewBestFit");
- if (! gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (button)))
- return;
-
- ev_window_set_sizing_mode (ev_window, EV_SIZING_BEST_FIT);
-}
-
-static void
-ev_window_cmd_view_page_width (GtkAction *action, EvWindow *ev_window)
-{
- EvWindowPrivate *priv = ev_window->priv;
- GtkWidget *button;
- int width, height;
- GtkRequisition vsb_requisition;
- int scrollbar_spacing;
-
- g_return_if_fail (EV_IS_WINDOW (ev_window));
-
- button = gtk_ui_manager_get_widget (priv->ui_manager, "/ToolBar/ViewPageWidth");
- if (! gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (button)))
- return;
-
-
- width = priv->scrolled_window->allocation.width;
- height = priv->scrolled_window->allocation.height;
-
- /* the scrolled window has a GTK_SHADOW_IN */
- width -= 2 * priv->view->style->xthickness;
- height -= 2 * priv->view->style->ythickness;
-
- gtk_widget_size_request (
- GTK_SCROLLED_WINDOW (priv->scrolled_window)->vscrollbar,
- &vsb_requisition);
- gtk_widget_style_get (priv->scrolled_window,
- "scrollbar_spacing", &scrollbar_spacing,
- NULL);
-
- ev_window_set_sizing_mode (ev_window, EV_SIZING_FIT_WIDTH);
-
- ev_view_set_size (EV_VIEW (ev_window->priv->view), width, height);
-}
-
-static void
ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window)
{
g_return_if_fail (EV_IS_WINDOW (ev_window));