Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
gtk
Commits
9dee9a84
Commit
9dee9a84
authored
Dec 26, 2010
by
Matthias Clasen
Browse files
Removed sealed members from GtkMenuItem
parent
05eb55dc
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
gtk/Makefile.am
View file @
9dee9a84
...
...
@@ -394,10 +394,11 @@ gtk_private_h_sources = \
gtkfilesystem.h
\
gtkfilesystemmodel.h
\
gtkiconcache.h
\
gtkimcontextsimpleseqs.h
\
gtkimcontextsimpleseqs.h
\
gtkintl.h
\
gtkkeyhash.h
\
gtkmenuprivate.h
\
gtkmenuitemprivate.h
\
gtkmenushellprivate.h
\
gtkmnemonichash.h
\
gtkmodifierstyle.h
\
...
...
gtk/gtkcheckmenuitem.c
View file @
9dee9a84
...
...
@@ -21,11 +21,12 @@
* Modified by the GTK+ Team and others 1997-2001. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
#include
"config.h"
#include
"gtkcheckmenuitem.h"
#include
"gtkmenuitemprivate.h"
#include
"gtkaccellabel.h"
#include
"gtkactivatable.h"
#include
"gtktoggleaction.h"
...
...
@@ -59,31 +60,31 @@ static gint gtk_check_menu_item_draw (GtkWidget *wid
cairo_t
*
cr
);
static
void
gtk_check_menu_item_activate
(
GtkMenuItem
*
menu_item
);
static
void
gtk_check_menu_item_toggle_size_request
(
GtkMenuItem
*
menu_item
,
gint
*
requisition
);
gint
*
requisition
);
static
void
gtk_real_check_menu_item_draw_indicator
(
GtkCheckMenuItem
*
check_menu_item
,
cairo_t
*
cr
);
cairo_t
*
cr
);
static
void
gtk_check_menu_item_set_property
(
GObject
*
object
,
guint
prop_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
);
guint
prop_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
);
static
void
gtk_check_menu_item_get_property
(
GObject
*
object
,
guint
prop_id
,
GValue
*
value
,
GParamSpec
*
pspec
);
guint
prop_id
,
GValue
*
value
,
GParamSpec
*
pspec
);
static
void
gtk_check_menu_item_activatable_interface_init
(
GtkActivatableIface
*
iface
);
static
void
gtk_check_menu_item_update
(
GtkActivatable
*
activatable
,
GtkAction
*
action
,
const
gchar
*
property_name
);
GtkAction
*
action
,
const
gchar
*
property_name
);
static
void
gtk_check_menu_item_sync_action_properties
(
GtkActivatable
*
activatable
,
GtkAction
*
action
);
GtkAction
*
action
);
static
GtkActivatableIface
*
parent_activatable_iface
;
static
guint
check_menu_item_signals
[
LAST_SIGNAL
]
=
{
0
};
G_DEFINE_TYPE_WITH_CODE
(
GtkCheckMenuItem
,
gtk_check_menu_item
,
GTK_TYPE_MENU_ITEM
,
G_IMPLEMENT_INTERFACE
(
GTK_TYPE_ACTIVATABLE
,
gtk_check_menu_item_activatable_interface_init
))
G_IMPLEMENT_INTERFACE
(
GTK_TYPE_ACTIVATABLE
,
gtk_check_menu_item_activatable_interface_init
))
static
void
gtk_check_menu_item_class_init
(
GtkCheckMenuItemClass
*
klass
)
...
...
@@ -143,12 +144,12 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
check_menu_item_signals
[
TOGGLED
]
=
g_signal_new
(
I_
(
"toggled"
),
G_OBJECT_CLASS_TYPE
(
gobject_class
),
G_SIGNAL_RUN_FIRST
,
G_STRUCT_OFFSET
(
GtkCheckMenuItemClass
,
toggled
),
NULL
,
NULL
,
_gtk_marshal_VOID__VOID
,
G_TYPE_NONE
,
0
);
G_OBJECT_CLASS_TYPE
(
gobject_class
),
G_SIGNAL_RUN_FIRST
,
G_STRUCT_OFFSET
(
GtkCheckMenuItemClass
,
toggled
),
NULL
,
NULL
,
_gtk_marshal_VOID__VOID
,
G_TYPE_NONE
,
0
);
g_type_class_add_private
(
klass
,
sizeof
(
GtkCheckMenuItemPrivate
));
}
...
...
@@ -163,8 +164,8 @@ gtk_check_menu_item_activatable_interface_init (GtkActivatableIface *iface)
static
void
gtk_check_menu_item_update
(
GtkActivatable
*
activatable
,
GtkAction
*
action
,
const
gchar
*
property_name
)
GtkAction
*
action
,
const
gchar
*
property_name
)
{
GtkCheckMenuItem
*
check_menu_item
;
...
...
@@ -184,12 +185,12 @@ gtk_check_menu_item_update (GtkActivatable *activatable,
if
(
strcmp
(
property_name
,
"draw-as-radio"
)
==
0
)
gtk_check_menu_item_set_draw_as_radio
(
check_menu_item
,
gtk_toggle_action_get_draw_as_radio
(
GTK_TOGGLE_ACTION
(
action
)));
gtk_toggle_action_get_draw_as_radio
(
GTK_TOGGLE_ACTION
(
action
)));
}
static
void
gtk_check_menu_item_sync_action_properties
(
GtkActivatable
*
activatable
,
GtkAction
*
action
)
GtkAction
*
action
)
{
GtkCheckMenuItem
*
check_menu_item
;
...
...
@@ -208,7 +209,7 @@ gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable,
return
;
gtk_check_menu_item_set_draw_as_radio
(
check_menu_item
,
gtk_toggle_action_get_draw_as_radio
(
GTK_TOGGLE_ACTION
(
action
)));
gtk_toggle_action_get_draw_as_radio
(
GTK_TOGGLE_ACTION
(
action
)));
}
GtkWidget
*
...
...
@@ -221,8 +222,8 @@ GtkWidget*
gtk_check_menu_item_new_with_label
(
const
gchar
*
label
)
{
return
g_object_new
(
GTK_TYPE_CHECK_MENU_ITEM
,
"label"
,
label
,
NULL
);
"label"
,
label
,
NULL
);
}
...
...
@@ -240,14 +241,14 @@ GtkWidget*
gtk_check_menu_item_new_with_mnemonic
(
const
gchar
*
label
)
{
return
g_object_new
(
GTK_TYPE_CHECK_MENU_ITEM
,
"label"
,
label
,
"use-underline"
,
TRUE
,
NULL
);
"label"
,
label
,
"use-underline"
,
TRUE
,
NULL
);
}
void
gtk_check_menu_item_set_active
(
GtkCheckMenuItem
*
check_menu_item
,
gboolean
is_active
)
gboolean
is_active
)
{
GtkCheckMenuItemPrivate
*
priv
;
...
...
@@ -280,7 +281,7 @@ gtk_check_menu_item_get_active (GtkCheckMenuItem *check_menu_item)
static
void
gtk_check_menu_item_toggle_size_request
(
GtkMenuItem
*
menu_item
,
gint
*
requisition
)
gint
*
requisition
)
{
guint
toggle_spacing
;
guint
indicator_size
;
...
...
@@ -288,9 +289,9 @@ gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item,
g_return_if_fail
(
GTK_IS_CHECK_MENU_ITEM
(
menu_item
));
gtk_widget_style_get
(
GTK_WIDGET
(
menu_item
),
"toggle-spacing"
,
&
toggle_spacing
,
"indicator-size"
,
&
indicator_size
,
NULL
);
"toggle-spacing"
,
&
toggle_spacing
,
"indicator-size"
,
&
indicator_size
,
NULL
);
*
requisition
=
indicator_size
+
toggle_spacing
;
}
...
...
@@ -363,7 +364,7 @@ gtk_check_menu_item_get_inconsistent (GtkCheckMenuItem *check_menu_item)
**/
void
gtk_check_menu_item_set_draw_as_radio
(
GtkCheckMenuItem
*
check_menu_item
,
gboolean
draw_as_radio
)
gboolean
draw_as_radio
)
{
GtkCheckMenuItemPrivate
*
priv
;
...
...
@@ -450,7 +451,7 @@ gtk_check_menu_item_activate (GtkMenuItem *menu_item)
static
void
gtk_real_check_menu_item_draw_indicator
(
GtkCheckMenuItem
*
check_menu_item
,
cairo_t
*
cr
)
cairo_t
*
cr
)
{
GtkCheckMenuItemPrivate
*
priv
=
check_menu_item
->
priv
;
GtkWidget
*
widget
;
...
...
@@ -475,72 +476,72 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
gtk_widget_get_allocation
(
widget
,
&
allocation
);
gtk_widget_style_get
(
widget
,
"toggle-spacing"
,
&
toggle_spacing
,
"horizontal-padding"
,
&
horizontal_padding
,
"indicator-size"
,
&
indicator_size
,
NULL
);
"toggle-spacing"
,
&
toggle_spacing
,
"horizontal-padding"
,
&
horizontal_padding
,
"indicator-size"
,
&
indicator_size
,
NULL
);
toggle_size
=
GTK_MENU_ITEM
(
check_menu_item
)
->
toggle_size
;
toggle_size
=
GTK_MENU_ITEM
(
check_menu_item
)
->
priv
->
toggle_size
;
border_width
=
gtk_container_get_border_width
(
GTK_CONTAINER
(
widget
));
offset
=
border_width
+
style
->
xthickness
+
2
;
if
(
gtk_widget_get_direction
(
widget
)
==
GTK_TEXT_DIR_LTR
)
{
{
x
=
offset
+
horizontal_padding
+
(
toggle_size
-
toggle_spacing
-
indicator_size
)
/
2
;
}
(
toggle_size
-
toggle_spacing
-
indicator_size
)
/
2
;
}
else
{
{
x
=
allocation
.
width
-
offset
-
horizontal_padding
-
toggle_size
+
toggle_spacing
+
(
toggle_size
-
toggle_spacing
-
indicator_size
)
/
2
;
}
offset
-
horizontal_padding
-
toggle_size
+
toggle_spacing
+
(
toggle_size
-
toggle_spacing
-
indicator_size
)
/
2
;
}
y
=
(
allocation
.
height
-
indicator_size
)
/
2
;
if
(
priv
->
active
||
priv
->
always_show_toggle
||
(
gtk_widget_get_state
(
widget
)
==
GTK_STATE_PRELIGHT
))
{
priv
->
always_show_toggle
||
(
gtk_widget_get_state
(
widget
)
==
GTK_STATE_PRELIGHT
))
{
GdkWindow
*
window
;
window
=
gtk_widget_get_window
(
widget
);
state_type
=
gtk_widget_get_state
(
widget
);
if
(
priv
->
inconsistent
)
shadow_type
=
GTK_SHADOW_ETCHED_IN
;
else
if
(
priv
->
active
)
shadow_type
=
GTK_SHADOW_IN
;
else
shadow_type
=
GTK_SHADOW_OUT
;
if
(
!
gtk_widget_is_sensitive
(
widget
))
state_type
=
GTK_STATE_INSENSITIVE
;
if
(
priv
->
draw_as_radio
)
{
state_type
=
gtk_widget_get_state
(
widget
);
if
(
priv
->
inconsistent
)
shadow_type
=
GTK_SHADOW_ETCHED_IN
;
else
if
(
priv
->
active
)
shadow_type
=
GTK_SHADOW_IN
;
else
shadow_type
=
GTK_SHADOW_OUT
;
if
(
!
gtk_widget_is_sensitive
(
widget
))
state_type
=
GTK_STATE_INSENSITIVE
;
if
(
priv
->
draw_as_radio
)
{
gtk_paint_option
(
style
,
cr
,
state_type
,
shadow_type
,
widget
,
"option"
,
x
,
y
,
indicator_size
,
indicator_size
);
}
else
{
state_type
,
shadow_type
,
widget
,
"option"
,
x
,
y
,
indicator_size
,
indicator_size
);
}
else
{
gtk_paint_check
(
style
,
cr
,
state_type
,
shadow_type
,
widget
,
"check"
,
x
,
y
,
indicator_size
,
indicator_size
);
}
}
state_type
,
shadow_type
,
widget
,
"check"
,
x
,
y
,
indicator_size
,
indicator_size
);
}
}
}
}
static
void
gtk_check_menu_item_get_property
(
GObject
*
object
,
guint
prop_id
,
GValue
*
value
,
GParamSpec
*
pspec
)
guint
prop_id
,
GValue
*
value
,
GParamSpec
*
pspec
)
{
GtkCheckMenuItem
*
checkitem
=
GTK_CHECK_MENU_ITEM
(
object
);
GtkCheckMenuItemPrivate
*
priv
=
checkitem
->
priv
;
...
...
@@ -565,9 +566,9 @@ gtk_check_menu_item_get_property (GObject *object,
static
void
gtk_check_menu_item_set_property
(
GObject
*
object
,
guint
prop_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
)
guint
prop_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
)
{
GtkCheckMenuItem
*
checkitem
=
GTK_CHECK_MENU_ITEM
(
object
);
...
...
gtk/gtkimagemenuitem.c
View file @
9dee9a84
This diff is collapsed.
Click to expand it.
gtk/gtkmenu.c
View file @
9dee9a84
...
...
@@ -35,6 +35,7 @@
#include
"gtkmain.h"
#include
"gtkmarshalers.h"
#include
"gtkmenuprivate.h"
#include
"gtkmenuitemprivate.h"
#include
"gtkmenushellprivate.h"
#include
"gtktearoffmenuitem.h"
#include
"gtkwindow.h"
...
...
@@ -3032,13 +3033,13 @@ gtk_menu_get_preferred_width (GtkWidget *widget,
* case the toggle size request depends on the size
* request of a child of the child (e.g. for ImageMenuItem)
*/
GTK_MENU_ITEM
(
child
)
->
show_submenu_indicator
=
TRUE
;
GTK_MENU_ITEM
(
child
)
->
priv
->
show_submenu_indicator
=
TRUE
;
gtk_widget_get_preferred_width
(
child
,
&
child_min
,
&
child_nat
);
gtk_menu_item_toggle_size_request
(
GTK_MENU_ITEM
(
child
),
&
toggle_size
);
max_toggle_size
=
MAX
(
max_toggle_size
,
toggle_size
);
max_accel_width
=
MAX
(
max_accel_width
,
GTK_MENU_ITEM
(
child
)
->
accelerator_width
);
GTK_MENU_ITEM
(
child
)
->
priv
->
accelerator_width
);
part
=
child_min
/
(
r
-
l
);
min_width
=
MAX
(
min_width
,
part
);
...
...
@@ -3325,7 +3326,7 @@ get_accel_path (GtkWidget *menu_item,
path
=
_gtk_widget_get_accel_path
(
menu_item
,
locked
);
if
(
!
path
)
{
path
=
GTK_MENU_ITEM
(
menu_item
)
->
accel_path
;
path
=
GTK_MENU_ITEM
(
menu_item
)
->
priv
->
accel_path
;
if
(
locked
)
{
...
...
@@ -3437,7 +3438,7 @@ gtk_menu_key_press (GtkWidget *widget,
if
(
can_change_accels
&&
menu_shell
->
priv
->
active_menu_item
&&
gtk_bin_get_child
(
GTK_BIN
(
menu_shell
->
priv
->
active_menu_item
))
&&
/* no separators */
GTK_MENU_ITEM
(
menu_shell
->
priv
->
active_menu_item
)
->
submenu
==
NULL
&&
/* no submenus */
GTK_MENU_ITEM
(
menu_shell
->
priv
->
active_menu_item
)
->
priv
->
submenu
==
NULL
&&
/* no submenus */
(
delete
||
gtk_accelerator_valid
(
accel_key
,
accel_mods
)))
{
GtkWidget
*
menu_item
=
menu_shell
->
priv
->
active_menu_item
;
...
...
@@ -3505,7 +3506,7 @@ definitely_within_item (GtkWidget *widget,
gint
x
,
gint
y
)
{
GdkWindow
*
window
=
GTK_MENU_ITEM
(
widget
)
->
event_window
;
GdkWindow
*
window
=
GTK_MENU_ITEM
(
widget
)
->
priv
->
event_window
;
int
w
,
h
;
w
=
gdk_window_get_width
(
window
);
...
...
@@ -4250,10 +4251,10 @@ gtk_menu_leave_notify (GtkWidget *widget,
* with a submenu, in which case we enter submenu navigation mode.
*/
if
(
menu_shell
->
priv
->
active_menu_item
!=
NULL
&&
menu_item
->
submenu
!=
NULL
&&
menu_item
->
submenu_placement
==
GTK_LEFT_RIGHT
)
&&
menu_item
->
priv
->
submenu
!=
NULL
&&
menu_item
->
priv
->
submenu_placement
==
GTK_LEFT_RIGHT
)
{
if
(
GTK_MENU_SHELL
(
menu_item
->
submenu
)
->
priv
->
active
)
if
(
GTK_MENU_SHELL
(
menu_item
->
priv
->
submenu
)
->
priv
->
active
)
{
gtk_menu_set_submenu_navigation_region
(
menu
,
menu_item
,
event
);
return
TRUE
;
...
...
@@ -4389,12 +4390,12 @@ gtk_menu_set_submenu_navigation_region (GtkMenu *menu,
GtkMenuPopdownData
*
popdown_data
;
GdkWindow
*
window
;
g_return_if_fail
(
menu_item
->
submenu
!=
NULL
);
g_return_if_fail
(
menu_item
->
priv
->
submenu
!=
NULL
);
g_return_if_fail
(
event
!=
NULL
);
event_widget
=
gtk_get_event_widget
((
GdkEvent
*
)
event
);
window
=
gtk_widget_get_window
(
menu_item
->
submenu
);
window
=
gtk_widget_get_window
(
menu_item
->
priv
->
submenu
);
gdk_window_get_origin
(
window
,
&
submenu_left
,
&
submenu_top
);
submenu_right
=
submenu_left
+
gdk_window_get_width
(
window
);
...
...
@@ -4413,7 +4414,7 @@ gtk_menu_set_submenu_navigation_region (GtkMenu *menu,
* location of the rectangle. This is why the width or height
* can be negative.
*/
if
(
menu_item
->
submenu_direction
==
GTK_DIRECTION_RIGHT
)
if
(
menu_item
->
priv
->
submenu_direction
==
GTK_DIRECTION_RIGHT
)
{
/* right */
priv
->
navigation_x
=
submenu_left
;
...
...
@@ -5359,7 +5360,7 @@ gtk_menu_move_current (GtkMenuShell *menu_shell,
{
GtkWidget
*
parent
=
menu_shell
->
priv
->
parent_menu_shell
;
if
(
!
GTK_MENU_ITEM
(
menu_shell
->
priv
->
active_menu_item
)
->
submenu
&&
if
(
!
GTK_MENU_ITEM
(
menu_shell
->
priv
->
active_menu_item
)
->
priv
->
submenu
&&
(
!
parent
||
g_list_length
(
GTK_MENU_SHELL
(
parent
)
->
priv
->
children
)
<=
1
))
match
=
menu_shell
->
priv
->
active_menu_item
;
...
...
gtk/gtkmenubar.c
View file @
9dee9a84
...
...
@@ -32,7 +32,7 @@
#include
"gtkbindings.h"
#include
"gtkmain.h"
#include
"gtkmarshalers.h"
#include
"gtkmenuitem.h"
#include
"gtkmenuitem
private
.h"
#include
"gtkmenuprivate.h"
#include
"gtkmenushellprivate.h"
#include
"gtksettings.h"
...
...
@@ -313,7 +313,7 @@ gtk_menu_bar_size_request (GtkWidget *widget,
{
gint
toggle_size
;
GTK_MENU_ITEM
(
child
)
->
show_submenu_indicator
=
FALSE
;
GTK_MENU_ITEM
(
child
)
->
priv
->
show_submenu_indicator
=
FALSE
;
gtk_widget_get_preferred_size
(
child
,
&
child_requisition
,
NULL
);
gtk_menu_item_toggle_size_request
(
GTK_MENU_ITEM
(
child
),
&
toggle_size
);
...
...
@@ -476,10 +476,11 @@ gtk_menu_bar_size_allocate (GtkWidget *widget,
child_requisition
.
width
+=
toggle_size
;
else
child_requisition
.
height
+=
toggle_size
;
/* Support for the right justified help menu */
if
((
children
==
NULL
)
&&
(
GTK_IS_MENU_ITEM
(
child
))
&&
(
GTK_MENU_ITEM
(
child
)
->
right_justify
))
if
(
children
==
NULL
&&
GTK_IS_MENU_ITEM
(
child
)
&&
GTK_MENU_ITEM
(
child
)
->
priv
->
right_justify
)
{
ltr_x
=
allocation
->
width
-
child_requisition
.
width
-
offset
;
...
...
@@ -526,11 +527,12 @@ gtk_menu_bar_size_allocate (GtkWidget *widget,
child_requisition
.
width
+=
toggle_size
;
else
child_requisition
.
height
+=
toggle_size
;
/* Support for the right justified help menu */
if
((
children
==
NULL
)
&&
(
GTK_IS_MENU_ITEM
(
child
))
&&
(
GTK_MENU_ITEM
(
child
)
->
right_justify
))
{
/* Support for the right justified help menu */
if
(
children
==
NULL
&&
GTK_IS_MENU_ITEM
(
child
)
&&
GTK_MENU_ITEM
(
child
)
->
priv
->
right_justify
)
{
ltr_y
=
allocation
->
height
-
child_requisition
.
height
-
offset
;
}
...
...
gtk/gtkmenuitem.c
View file @
9dee9a84
This diff is collapsed.
Click to expand it.
gtk/gtkmenuitem.h
View file @
9dee9a84
...
...
@@ -8,7 +8,7 @@
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
...
...
@@ -36,57 +36,46 @@
G_BEGIN_DECLS
#define
GTK_TYPE_MENU_ITEM
(gtk_menu_item_get_type ())
#define GTK_MENU_ITEM(obj)
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItem))
#define GTK_MENU_ITEM_CLASS(klass)
(G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_ITEM, GtkMenuItemClass))
#define GTK_IS_MENU_ITEM(obj)
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_ITEM))
#define GTK_IS_MENU_ITEM_CLASS(klass)
(G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_ITEM))
#define GTK_MENU_ITEM_GET_CLASS(obj)
(G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItemClass))
#define
GTK_TYPE_MENU_ITEM
(gtk_menu_item_get_type ())
#define GTK_MENU_ITEM(obj)
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItem))
#define GTK_MENU_ITEM_CLASS(klass)
(G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_ITEM, GtkMenuItemClass))
#define GTK_IS_MENU_ITEM(obj)
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_ITEM))
#define GTK_IS_MENU_ITEM_CLASS(klass)
(G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_ITEM))
#define GTK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItemClass))
typedef
struct
_GtkMenuItem
GtkMenuItem
;
typedef
struct
_GtkMenuItemClass
GtkMenuItemClass
;
typedef
struct
_GtkMenuItem
GtkMenuItem
;
typedef
struct
_GtkMenuItemClass
GtkMenuItemClass
;
typedef
struct
_GtkMenuItemPrivate
GtkMenuItemPrivate
;
struct
_GtkMenuItem
{
GtkBin
bin
;
GtkWidget
*
GSEAL
(
submenu
);
GdkWindow
*
GSEAL
(
event_window
);
guint16
GSEAL
(
toggle_size
);
guint16
GSEAL
(
accelerator_width
);
gchar
*
GSEAL
(
accel_path
);
guint
GSEAL
(
show_submenu_indicator
)
:
1
;
guint
GSEAL
(
submenu_placement
)
:
1
;
guint
GSEAL
(
submenu_direction
)
:
1
;
guint
GSEAL
(
right_justify
)
:
1
;
guint
GSEAL
(
timer_from_keypress
)
:
1
;
guint
GSEAL
(
from_menubar
)
:
1
;
guint
GSEAL
(
timer
);
/*< private >*/
GtkMenuItemPrivate
*
priv
;
};
struct
_GtkMenuItemClass
{
GtkBinClass
parent_class
;
/* If the following flag is true, then we should always
hide
* the menu when the MenuItem is activated. Otherwise,
the
/* If the following flag is true, then we should always
*
hide
the menu when the MenuItem is activated. Otherwise,
* it is up to the caller. For instance, when navigating
* a menu with the keyboard, <Space> doesn't hide, but
* <Return> does.
*/
guint
hide_on_activate
:
1
;
void
(
*
activate
)
(
GtkMenuItem
*
menu_item
);
void
(
*
activate_item
)
(
GtkMenuItem
*
menu_item
);
void
(
*
toggle_size_request
)
(
GtkMenuItem
*
menu_item
,
gint
*
requisition
);
gint
*
requisition
);
void
(
*
toggle_size_allocate
)
(
GtkMenuItem
*
menu_item
,
gint
allocation
);
gint
allocation
);
void
(
*
set_label
)
(
GtkMenuItem
*
menu_item
,
const
gchar
*
label
);
const
gchar
*
label
);
G_CONST_RETURN
gchar
*
(
*
get_label
)
(
GtkMenuItem
*
menu_item
);
void
(
*
select
)
(
GtkMenuItem
*
menu_item
);
...
...
@@ -100,44 +89,36 @@ struct _GtkMenuItemClass
};
GType
gtk_menu_item_get_type
(
void
)
G_GNUC_CONST
;
GType
gtk_menu_item_get_type
(
void
)
G_GNUC_CONST
;
GtkWidget
*
gtk_menu_item_new
(
void
);
GtkWidget
*
gtk_menu_item_new_with_label
(
const
gchar
*
label
);
GtkWidget
*
gtk_menu_item_new_with_mnemonic
(
const
gchar
*
label
);
void
gtk_menu_item_set_submenu
(
GtkMenuItem
*
menu_item
,
GtkWidget
*
submenu
);
GtkWidget
*
submenu
);
GtkWidget
*
gtk_menu_item_get_submenu
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_select
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_deselect
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_activate
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_toggle_size_request
(
GtkMenuItem
*
menu_item
,
gint
*
requisition
);
gint
*
requisition
);
void
gtk_menu_item_toggle_size_allocate
(
GtkMenuItem
*
menu_item
,
gint
allocation
);
gint
allocation
);
void
gtk_menu_item_set_right_justified
(
GtkMenuItem
*
menu_item
,
gboolean
right_justified
);
gboolean
right_justified
);
gboolean
gtk_menu_item_get_right_justified
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_set_accel_path
(
GtkMenuItem
*
menu_item
,
const
gchar
*
accel_path
);
void
gtk_menu_item_set_accel_path
(
GtkMenuItem
*
menu_item
,
const
gchar
*
accel_path
);
G_CONST_RETURN
gchar
*
gtk_menu_item_get_accel_path
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_set_label
(
GtkMenuItem
*
menu_item
,
const
gchar
*
label
);
const
gchar
*
label
);
G_CONST_RETURN
gchar
*
gtk_menu_item_get_label
(
GtkMenuItem
*
menu_item
);
void
gtk_menu_item_set_use_underline
(
GtkMenuItem
*
menu_item
,
gboolean
setting
);
gboolean
setting
);
gboolean
gtk_menu_item_get_use_underline
(
GtkMenuItem
*
menu_item
);
/* private */
void
_gtk_menu_item_refresh_accel_path
(
GtkMenuItem
*
menu_item
,
const
gchar
*
prefix
,
GtkAccelGroup
*
accel_group
,
gboolean
group_changed
);
gboolean
_gtk_menu_item_is_selectable
(
GtkWidget
*
menu_item
);
void
_gtk_menu_item_popup_submenu
(
GtkWidget
*
menu_item
,
gboolean
with_delay
);
void
_gtk_menu_item_popdown_submenu
(
GtkWidget
*
menu_item
);
G_END_DECLS
...
...
gtk/gtkmenuitemprivate.h
0 → 100644
View file @
9dee9a84
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the