forked from AuroraMiddleware/gtk
application window: Drop the priv pointer
This commit is contained in:
parent
d9626820e9
commit
ced07b92a2
@ -222,6 +222,7 @@ gtk_application_window_actions_new (GtkApplicationWindow *window)
|
||||
|
||||
/* Now onto GtkApplicationWindow... */
|
||||
|
||||
typedef struct _GtkApplicationWindowPrivate GtkApplicationWindowPrivate;
|
||||
struct _GtkApplicationWindowPrivate
|
||||
{
|
||||
GSimpleActionGroup *actions;
|
||||
@ -236,22 +237,31 @@ struct _GtkApplicationWindowPrivate
|
||||
GtkShortcutsWindow *help_overlay;
|
||||
};
|
||||
|
||||
static void gtk_application_window_group_iface_init (GActionGroupInterface *iface);
|
||||
static void gtk_application_window_map_iface_init (GActionMapInterface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkApplicationWindow, gtk_application_window, GTK_TYPE_WINDOW,
|
||||
G_ADD_PRIVATE (GtkApplicationWindow)
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, gtk_application_window_group_iface_init)
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_MAP, gtk_application_window_map_iface_init))
|
||||
|
||||
static void
|
||||
gtk_application_window_update_menubar (GtkApplicationWindow *window)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
gboolean should_have_menubar;
|
||||
gboolean have_menubar;
|
||||
|
||||
have_menubar = window->priv->menubar != NULL;
|
||||
have_menubar = priv->menubar != NULL;
|
||||
|
||||
should_have_menubar = window->priv->show_menubar &&
|
||||
(g_menu_model_get_n_items (G_MENU_MODEL (window->priv->app_menu_section)) ||
|
||||
g_menu_model_get_n_items (G_MENU_MODEL (window->priv->menubar_section)));
|
||||
should_have_menubar = priv->show_menubar &&
|
||||
(g_menu_model_get_n_items (G_MENU_MODEL (priv->app_menu_section)) ||
|
||||
g_menu_model_get_n_items (G_MENU_MODEL (priv->menubar_section)));
|
||||
|
||||
if (have_menubar && !should_have_menubar)
|
||||
{
|
||||
gtk_widget_unparent (window->priv->menubar);
|
||||
window->priv->menubar = NULL;
|
||||
gtk_widget_unparent (priv->menubar);
|
||||
priv->menubar = NULL;
|
||||
}
|
||||
|
||||
if (!have_menubar && should_have_menubar)
|
||||
@ -259,11 +269,11 @@ gtk_application_window_update_menubar (GtkApplicationWindow *window)
|
||||
GMenu *combined;
|
||||
|
||||
combined = g_menu_new ();
|
||||
g_menu_append_section (combined, NULL, G_MENU_MODEL (window->priv->app_menu_section));
|
||||
g_menu_append_section (combined, NULL, G_MENU_MODEL (window->priv->menubar_section));
|
||||
g_menu_append_section (combined, NULL, G_MENU_MODEL (priv->app_menu_section));
|
||||
g_menu_append_section (combined, NULL, G_MENU_MODEL (priv->menubar_section));
|
||||
|
||||
window->priv->menubar = gtk_menu_bar_new_from_model (G_MENU_MODEL (combined));
|
||||
gtk_widget_set_parent (window->priv->menubar, GTK_WIDGET (window));
|
||||
priv->menubar = gtk_menu_bar_new_from_model (G_MENU_MODEL (combined));
|
||||
gtk_widget_set_parent (priv->menubar, GTK_WIDGET (window));
|
||||
g_object_unref (combined);
|
||||
}
|
||||
}
|
||||
@ -298,6 +308,7 @@ static void
|
||||
gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window,
|
||||
GtkSettings *settings)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
gboolean shown_by_shell;
|
||||
gboolean shown_by_titlebar;
|
||||
|
||||
@ -308,13 +319,13 @@ gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window
|
||||
if (shown_by_shell || shown_by_titlebar)
|
||||
{
|
||||
/* the shell shows it, so don't show it locally */
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->app_menu_section)) != 0)
|
||||
g_menu_remove (window->priv->app_menu_section, 0);
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (priv->app_menu_section)) != 0)
|
||||
g_menu_remove (priv->app_menu_section, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* the shell does not show it, so make sure we show it */
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->app_menu_section)) == 0)
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (priv->app_menu_section)) == 0)
|
||||
{
|
||||
GMenuModel *app_menu = NULL;
|
||||
|
||||
@ -340,7 +351,7 @@ gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window
|
||||
name = g_strdup (_("Application"));
|
||||
}
|
||||
|
||||
g_menu_append_submenu (window->priv->app_menu_section, name, app_menu);
|
||||
g_menu_append_submenu (priv->app_menu_section, name, app_menu);
|
||||
g_free (name);
|
||||
}
|
||||
}
|
||||
@ -351,6 +362,7 @@ static void
|
||||
gtk_application_window_update_shell_shows_menubar (GtkApplicationWindow *window,
|
||||
GtkSettings *settings)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
gboolean shown_by_shell;
|
||||
|
||||
g_object_get (settings, "gtk-shell-shows-menubar", &shown_by_shell, NULL);
|
||||
@ -358,13 +370,13 @@ gtk_application_window_update_shell_shows_menubar (GtkApplicationWindow *window,
|
||||
if (shown_by_shell)
|
||||
{
|
||||
/* the shell shows it, so don't show it locally */
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->menubar_section)) != 0)
|
||||
g_menu_remove (window->priv->menubar_section, 0);
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (priv->menubar_section)) != 0)
|
||||
g_menu_remove (priv->menubar_section, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* the shell does not show it, so make sure we show it */
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->menubar_section)) == 0)
|
||||
if (g_menu_model_get_n_items (G_MENU_MODEL (priv->menubar_section)) == 0)
|
||||
{
|
||||
GMenuModel *menubar = NULL;
|
||||
|
||||
@ -372,7 +384,7 @@ gtk_application_window_update_shell_shows_menubar (GtkApplicationWindow *window,
|
||||
menubar = gtk_application_get_menubar (gtk_window_get_application (GTK_WINDOW (window)));
|
||||
|
||||
if (menubar != NULL)
|
||||
g_menu_append_section (window->priv->menubar_section, NULL, menubar);
|
||||
g_menu_append_section (priv->menubar_section, NULL, menubar);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -403,12 +415,13 @@ static gchar **
|
||||
gtk_application_window_list_actions (GActionGroup *group)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (group);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
/* may be NULL after dispose has run */
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return g_new0 (char *, 0 + 1);
|
||||
|
||||
return g_action_group_list_actions (G_ACTION_GROUP (window->priv->actions));
|
||||
return g_action_group_list_actions (G_ACTION_GROUP (priv->actions));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -421,11 +434,12 @@ gtk_application_window_query_action (GActionGroup *group,
|
||||
GVariant **state)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (group);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return FALSE;
|
||||
|
||||
return g_action_group_query_action (G_ACTION_GROUP (window->priv->actions),
|
||||
return g_action_group_query_action (G_ACTION_GROUP (priv->actions),
|
||||
action_name, enabled, parameter_type, state_type, state_hint, state);
|
||||
}
|
||||
|
||||
@ -435,11 +449,12 @@ gtk_application_window_activate_action (GActionGroup *group,
|
||||
GVariant *parameter)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (group);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return;
|
||||
|
||||
g_action_group_activate_action (G_ACTION_GROUP (window->priv->actions), action_name, parameter);
|
||||
g_action_group_activate_action (G_ACTION_GROUP (priv->actions), action_name, parameter);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -448,11 +463,12 @@ gtk_application_window_change_action_state (GActionGroup *group,
|
||||
GVariant *state)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (group);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return;
|
||||
|
||||
g_action_group_change_action_state (G_ACTION_GROUP (window->priv->actions), action_name, state);
|
||||
g_action_group_change_action_state (G_ACTION_GROUP (priv->actions), action_name, state);
|
||||
}
|
||||
|
||||
static GAction *
|
||||
@ -460,11 +476,12 @@ gtk_application_window_lookup_action (GActionMap *action_map,
|
||||
const gchar *action_name)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (action_map);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return NULL;
|
||||
|
||||
return g_action_map_lookup_action (G_ACTION_MAP (window->priv->actions), action_name);
|
||||
return g_action_map_lookup_action (G_ACTION_MAP (priv->actions), action_name);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -472,11 +489,12 @@ gtk_application_window_add_action (GActionMap *action_map,
|
||||
GAction *action)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (action_map);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return;
|
||||
|
||||
g_action_map_add_action (G_ACTION_MAP (window->priv->actions), action);
|
||||
g_action_map_add_action (G_ACTION_MAP (priv->actions), action);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -484,11 +502,12 @@ gtk_application_window_remove_action (GActionMap *action_map,
|
||||
const gchar *action_name)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (action_map);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (!window->priv->actions)
|
||||
if (!priv->actions)
|
||||
return;
|
||||
|
||||
g_action_map_remove_action (G_ACTION_MAP (window->priv->actions), action_name);
|
||||
g_action_map_remove_action (G_ACTION_MAP (priv->actions), action_name);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -508,11 +527,6 @@ gtk_application_window_map_iface_init (GActionMapInterface *iface)
|
||||
iface->remove_action = gtk_application_window_remove_action;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkApplicationWindow, gtk_application_window, GTK_TYPE_WINDOW,
|
||||
G_ADD_PRIVATE (GtkApplicationWindow)
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, gtk_application_window_group_iface_init)
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_MAP, gtk_application_window_map_iface_init))
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_SHOW_MENUBAR,
|
||||
@ -557,7 +571,7 @@ gtk_application_window_measure (GtkWidget *widget,
|
||||
minimum_baseline, natural_baseline);
|
||||
|
||||
|
||||
gtk_widget_measure (window->priv->menubar, orientation, menubar_height, &menubar_min, &menubar_nat, NULL, NULL);
|
||||
gtk_widget_measure (priv->menubar, orientation, menubar_height, &menubar_min, &menubar_nat, NULL, NULL);
|
||||
|
||||
_gtk_window_get_shadow_width (GTK_WINDOW (widget), &border);
|
||||
menubar_min += border.left + border.right;
|
||||
@ -597,8 +611,9 @@ gtk_application_window_real_size_allocate (GtkWidget *widget,
|
||||
int baseline)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (window->priv->menubar != NULL)
|
||||
if (priv->menubar != NULL)
|
||||
{
|
||||
GtkAllocation menubar_allocation;
|
||||
GtkAllocation child_allocation;
|
||||
@ -608,12 +623,12 @@ gtk_application_window_real_size_allocate (GtkWidget *widget,
|
||||
_gtk_window_set_allocation (GTK_WINDOW (widget), width, height, &child_allocation);
|
||||
menubar_allocation = child_allocation;
|
||||
|
||||
gtk_widget_measure (window->priv->menubar, GTK_ORIENTATION_VERTICAL,
|
||||
gtk_widget_measure (priv->menubar, GTK_ORIENTATION_VERTICAL,
|
||||
menubar_allocation.width,
|
||||
&menubar_height, NULL, NULL, NULL);
|
||||
|
||||
menubar_allocation.height = menubar_height;
|
||||
gtk_widget_size_allocate (window->priv->menubar, &menubar_allocation, baseline);
|
||||
gtk_widget_size_allocate (priv->menubar, &menubar_allocation, baseline);
|
||||
|
||||
child_allocation.y += menubar_height;
|
||||
child_allocation.height -= menubar_height;
|
||||
@ -664,17 +679,19 @@ gtk_application_window_real_unrealize (GtkWidget *widget)
|
||||
GActionGroup *
|
||||
gtk_application_window_get_action_group (GtkApplicationWindow *window)
|
||||
{
|
||||
return G_ACTION_GROUP (window->priv->actions);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
return G_ACTION_GROUP (priv->actions);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_application_window_real_map (GtkWidget *widget)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
/* XXX could eliminate this by tweaking gtk_window_map */
|
||||
if (window->priv->menubar)
|
||||
gtk_widget_map (window->priv->menubar);
|
||||
if (priv->menubar)
|
||||
gtk_widget_map (priv->menubar);
|
||||
|
||||
GTK_WIDGET_CLASS (gtk_application_window_parent_class)->map (widget);
|
||||
}
|
||||
@ -683,10 +700,11 @@ static void
|
||||
gtk_application_window_real_unmap (GtkWidget *widget)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
/* XXX could eliminate this by tweaking gtk_window_unmap */
|
||||
if (window->priv->menubar)
|
||||
gtk_widget_unmap (window->priv->menubar);
|
||||
if (priv->menubar)
|
||||
gtk_widget_unmap (priv->menubar);
|
||||
|
||||
GTK_WIDGET_CLASS (gtk_application_window_parent_class)->unmap (widget);
|
||||
}
|
||||
@ -697,9 +715,10 @@ gtk_application_window_real_forall_internal (GtkContainer *container,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (container);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (window->priv->menubar)
|
||||
callback (window->priv->menubar, user_data);
|
||||
if (priv->menubar)
|
||||
callback (priv->menubar, user_data);
|
||||
|
||||
GTK_CONTAINER_CLASS (gtk_application_window_parent_class)
|
||||
->forall (container, callback, user_data);
|
||||
@ -712,11 +731,12 @@ gtk_application_window_get_property (GObject *object,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (object);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_SHOW_MENUBAR:
|
||||
g_value_set_boolean (value, window->priv->show_menubar);
|
||||
g_value_set_boolean (value, priv->show_menubar);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -731,6 +751,7 @@ gtk_application_window_set_property (GObject *object,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (object);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
@ -747,20 +768,21 @@ static void
|
||||
gtk_application_window_dispose (GObject *object)
|
||||
{
|
||||
GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (object);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (window->priv->menubar)
|
||||
if (priv->menubar)
|
||||
{
|
||||
gtk_widget_unparent (window->priv->menubar);
|
||||
window->priv->menubar = NULL;
|
||||
gtk_widget_unparent (priv->menubar);
|
||||
priv->menubar = NULL;
|
||||
}
|
||||
|
||||
g_clear_object (&window->priv->app_menu_section);
|
||||
g_clear_object (&window->priv->menubar_section);
|
||||
g_clear_object (&priv->app_menu_section);
|
||||
g_clear_object (&priv->menubar_section);
|
||||
|
||||
if (window->priv->help_overlay)
|
||||
if (priv->help_overlay)
|
||||
{
|
||||
gtk_widget_destroy (GTK_WIDGET (window->priv->help_overlay));
|
||||
g_clear_object (&window->priv->help_overlay);
|
||||
gtk_widget_destroy (GTK_WIDGET (priv->help_overlay));
|
||||
g_clear_object (&priv->help_overlay);
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gtk_application_window_parent_class)->dispose (object);
|
||||
@ -772,30 +794,30 @@ gtk_application_window_dispose (GObject *object)
|
||||
* That reduces our chances of being watched as a GActionGroup from a
|
||||
* muxer constructed by GtkApplication.
|
||||
*/
|
||||
g_clear_object (&window->priv->actions);
|
||||
g_clear_object (&priv->actions);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_application_window_init (GtkApplicationWindow *window)
|
||||
{
|
||||
window->priv = gtk_application_window_get_instance_private (window);
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
window->priv->actions = gtk_application_window_actions_new (window);
|
||||
window->priv->app_menu_section = g_menu_new ();
|
||||
window->priv->menubar_section = g_menu_new ();
|
||||
priv->actions = gtk_application_window_actions_new (window);
|
||||
priv->app_menu_section = g_menu_new ();
|
||||
priv->menubar_section = g_menu_new ();
|
||||
|
||||
gtk_widget_insert_action_group (GTK_WIDGET (window), "win", G_ACTION_GROUP (window->priv->actions));
|
||||
gtk_widget_insert_action_group (GTK_WIDGET (window), "win", G_ACTION_GROUP (priv->actions));
|
||||
|
||||
/* window->priv->actions is the one and only ref on the group, so when
|
||||
/* priv->actions is the one and only ref on the group, so when
|
||||
* we dispose, the action group will die, disconnecting all signals.
|
||||
*/
|
||||
g_signal_connect_swapped (window->priv->actions, "action-added",
|
||||
g_signal_connect_swapped (priv->actions, "action-added",
|
||||
G_CALLBACK (g_action_group_action_added), window);
|
||||
g_signal_connect_swapped (window->priv->actions, "action-enabled-changed",
|
||||
g_signal_connect_swapped (priv->actions, "action-enabled-changed",
|
||||
G_CALLBACK (g_action_group_action_enabled_changed), window);
|
||||
g_signal_connect_swapped (window->priv->actions, "action-state-changed",
|
||||
g_signal_connect_swapped (priv->actions, "action-state-changed",
|
||||
G_CALLBACK (g_action_group_action_state_changed), window);
|
||||
g_signal_connect_swapped (window->priv->actions, "action-removed",
|
||||
g_signal_connect_swapped (priv->actions, "action-removed",
|
||||
G_CALLBACK (g_action_group_action_removed), window);
|
||||
}
|
||||
|
||||
@ -869,7 +891,8 @@ gtk_application_window_new (GtkApplication *application)
|
||||
gboolean
|
||||
gtk_application_window_get_show_menubar (GtkApplicationWindow *window)
|
||||
{
|
||||
return window->priv->show_menubar;
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
return priv->show_menubar;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -884,13 +907,14 @@ void
|
||||
gtk_application_window_set_show_menubar (GtkApplicationWindow *window,
|
||||
gboolean show_menubar)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
g_return_if_fail (GTK_IS_APPLICATION_WINDOW (window));
|
||||
|
||||
show_menubar = !!show_menubar;
|
||||
|
||||
if (window->priv->show_menubar != show_menubar)
|
||||
if (priv->show_menubar != show_menubar)
|
||||
{
|
||||
window->priv->show_menubar = show_menubar;
|
||||
priv->show_menubar = show_menubar;
|
||||
|
||||
gtk_application_window_update_menubar (window);
|
||||
|
||||
@ -911,17 +935,19 @@ gtk_application_window_set_show_menubar (GtkApplicationWindow *window,
|
||||
guint
|
||||
gtk_application_window_get_id (GtkApplicationWindow *window)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
g_return_val_if_fail (GTK_IS_APPLICATION_WINDOW (window), 0);
|
||||
|
||||
return window->priv->id;
|
||||
return priv->id;
|
||||
}
|
||||
|
||||
void
|
||||
gtk_application_window_set_id (GtkApplicationWindow *window,
|
||||
guint id)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
g_return_if_fail (GTK_IS_APPLICATION_WINDOW (window));
|
||||
window->priv->id = id;
|
||||
priv->id = id;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -930,9 +956,10 @@ show_help_overlay (GSimpleAction *action,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkApplicationWindow *window = user_data;
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
|
||||
if (window->priv->help_overlay)
|
||||
gtk_widget_show (GTK_WIDGET (window->priv->help_overlay));
|
||||
if (priv->help_overlay)
|
||||
gtk_widget_show (GTK_WIDGET (priv->help_overlay));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -950,14 +977,15 @@ void
|
||||
gtk_application_window_set_help_overlay (GtkApplicationWindow *window,
|
||||
GtkShortcutsWindow *help_overlay)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
g_return_if_fail (GTK_IS_APPLICATION_WINDOW (window));
|
||||
g_return_if_fail (help_overlay == NULL || GTK_IS_SHORTCUTS_WINDOW (help_overlay));
|
||||
|
||||
if (window->priv->help_overlay)
|
||||
gtk_widget_destroy (GTK_WIDGET (window->priv->help_overlay));
|
||||
g_set_object (&window->priv->help_overlay, help_overlay);
|
||||
if (priv->help_overlay)
|
||||
gtk_widget_destroy (GTK_WIDGET (priv->help_overlay));
|
||||
g_set_object (&priv->help_overlay, help_overlay);
|
||||
|
||||
if (!window->priv->help_overlay)
|
||||
if (!priv->help_overlay)
|
||||
return;
|
||||
|
||||
gtk_window_set_modal (GTK_WINDOW (help_overlay), TRUE);
|
||||
@ -965,14 +993,14 @@ gtk_application_window_set_help_overlay (GtkApplicationWindow *window,
|
||||
gtk_window_set_transient_for (GTK_WINDOW (help_overlay), GTK_WINDOW (window));
|
||||
gtk_shortcuts_window_set_window (help_overlay, GTK_WINDOW (window));
|
||||
|
||||
if (!g_action_map_lookup_action (G_ACTION_MAP (window->priv->actions), "show-help-overlay"))
|
||||
if (!g_action_map_lookup_action (G_ACTION_MAP (priv->actions), "show-help-overlay"))
|
||||
{
|
||||
GSimpleAction *action;
|
||||
|
||||
action = g_simple_action_new ("show-help-overlay", NULL);
|
||||
g_signal_connect (action, "activate", G_CALLBACK (show_help_overlay), window);
|
||||
|
||||
g_action_map_add_action (G_ACTION_MAP (window->priv->actions), G_ACTION (action));
|
||||
g_action_map_add_action (G_ACTION_MAP (priv->actions), G_ACTION (action));
|
||||
g_object_unref (G_OBJECT (action));
|
||||
}
|
||||
}
|
||||
@ -989,7 +1017,8 @@ gtk_application_window_set_help_overlay (GtkApplicationWindow *window,
|
||||
GtkShortcutsWindow *
|
||||
gtk_application_window_get_help_overlay (GtkApplicationWindow *window)
|
||||
{
|
||||
GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
|
||||
g_return_val_if_fail (GTK_IS_APPLICATION_WINDOW (window), NULL);
|
||||
|
||||
return window->priv->help_overlay;
|
||||
return priv->help_overlay;
|
||||
}
|
||||
|
@ -41,16 +41,12 @@ G_BEGIN_DECLS
|
||||
#define GTK_APPLICATION_WINDOW_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \
|
||||
GTK_TYPE_APPLICATION_WINDOW, GtkApplicationWindowClass))
|
||||
|
||||
typedef struct _GtkApplicationWindowPrivate GtkApplicationWindowPrivate;
|
||||
typedef struct _GtkApplicationWindowClass GtkApplicationWindowClass;
|
||||
typedef struct _GtkApplicationWindow GtkApplicationWindow;
|
||||
|
||||
struct _GtkApplicationWindow
|
||||
{
|
||||
GtkWindow parent_instance;
|
||||
|
||||
/*< private >*/
|
||||
GtkApplicationWindowPrivate *priv;
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user