summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorTingPing <tingping@tingping.se>2013-09-19 17:52:17 -0400
committerTingPing <tingping@tingping.se>2013-09-19 17:52:17 -0400
commitf6ba2741345fbab44947e9f81ff0ea543aeba030 (patch)
tree9e83c2cb6457b4968169283421d77aea497c5a91 /src
parentcd825ac735303393f2b36bfcd3dc99e1cf93b1db (diff)
Add fullscreen to to view menu
Diffstat (limited to 'src')
-rw-r--r--src/common/cfgfiles.c1
-rw-r--r--src/common/hexchat.h1
-rw-r--r--src/fe-gtk/maingui.c8
-rw-r--r--src/fe-gtk/menu.c28
-rw-r--r--src/fe-gtk/plugin-tray.c4
5 files changed, 35 insertions, 7 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 675ed837..b7d55e87 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -477,6 +477,7 @@ const struct prefs vars[] =
 	{"gui_url_mod", P_OFFINT (hex_gui_url_mod), TYPE_INT},
 	{"gui_usermenu", P_OFFINT (hex_gui_usermenu), TYPE_BOOL},
 	{"gui_win_height", P_OFFINT (hex_gui_win_height), TYPE_INT},
+	{"gui_win_fullscreen", P_OFFINT (hex_gui_win_fullscreen), TYPE_INT},
 	{"gui_win_left", P_OFFINT (hex_gui_win_left), TYPE_INT},
 	{"gui_win_modes", P_OFFINT (hex_gui_win_modes), TYPE_BOOL},
 	{"gui_win_save", P_OFFINT (hex_gui_win_save), TYPE_BOOL},
diff --git a/src/common/hexchat.h b/src/common/hexchat.h
index 68da144d..1307f260 100644
--- a/src/common/hexchat.h
+++ b/src/common/hexchat.h
@@ -289,6 +289,7 @@ struct hexchatprefs
 	int hex_gui_ulist_sort;
 	int hex_gui_url_mod;
 	int hex_gui_win_height;
+	int hex_gui_win_fullscreen;
 	int hex_gui_win_left;
 	int hex_gui_win_state;
 	int hex_gui_win_top;
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index 11b76261..b643485a 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -495,6 +495,10 @@ mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata
 	if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
 		prefs.hex_gui_win_state = 1;
 
+	prefs.hex_gui_win_fullscreen = 0;
+	if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
+		prefs.hex_gui_win_fullscreen = 1;
+
 	return FALSE;
 }
 
@@ -505,7 +509,7 @@ mg_configure_cb (GtkWidget *wid, GdkEventConfigure *event, session *sess)
 	{
 		if (mg_gui)
 		{
-			if (prefs.hex_gui_win_save)
+			if (prefs.hex_gui_win_save && !prefs.hex_gui_win_state && !prefs.hex_gui_win_fullscreen)
 			{
 				sess = current_sess;
 				gtk_window_get_position (GTK_WINDOW (wid), &prefs.hex_gui_win_left,
@@ -3313,6 +3317,8 @@ mg_create_tabwindow (session *sess)
 						  prefs.hex_gui_win_top);
 	if (prefs.hex_gui_win_state)
 		gtk_window_maximize (GTK_WINDOW (win));
+	if (prefs.hex_gui_win_fullscreen)
+		gtk_window_fullscreen (GTK_WINDOW (win));
 	gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER);
 
 	g_signal_connect (G_OBJECT (win), "delete_event",
diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c
index 8d87f84e..e348e36a 100644
--- a/src/fe-gtk/menu.c
+++ b/src/fe-gtk/menu.c
@@ -890,6 +890,23 @@ menu_cmbuttons_toggle (GtkWidget *wid, gpointer ud)
 								 prefs.hex_gui_mode_buttons);
 }
 
+static void
+menu_fullscreen_toggle (GtkWidget *wid, gpointer ud)
+{
+	if (!prefs.hex_gui_win_fullscreen)
+		gtk_window_fullscreen (GTK_WINDOW(parent_window));
+	else
+	{
+		gtk_window_unfullscreen (GTK_WINDOW(parent_window));
+
+		/* At least on Windows we need to manually reposition the window */
+		gtk_window_resize (GTK_WINDOW(parent_window),
+					prefs.hex_gui_win_width, prefs.hex_gui_win_height);
+		gtk_window_move (GTK_WINDOW(parent_window),
+					prefs.hex_gui_win_left, prefs.hex_gui_win_top);
+	}
+}
+
 void
 menu_middlemenu (session *sess, GdkEventButton *event)
 {
@@ -1722,6 +1739,8 @@ static struct mymenu mymenu[] = {
 		{N_("Text"), menu_metres_text, 0, M_MENURADIO, 0, 0, 1},
 		{N_("Both"), menu_metres_both, 0, M_MENURADIO, 0, 0, 1},
 		{0, 0, 0, M_END, 0, 0, 0},	/* 32 */
+	{ 0, 0, 0, M_SEP, 0, 0, 0 },
+	{N_ ("Toggle _Fullscreen"), menu_fullscreen_toggle, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_F11},
 
 	{N_("_Server"), 0, 0, M_NEWMENU, 0, 0, 1},
 	{N_("_Disconnect"), menu_disconnect, GTK_STOCK_DISCONNECT, M_MENUSTOCK, MENU_ID_DISCONNECT, 0, 1},
@@ -1729,7 +1748,7 @@ static struct mymenu mymenu[] = {
 	{N_("_Join a Channel..."), menu_join, GTK_STOCK_JUMP_TO, M_MENUSTOCK, MENU_ID_JOIN, 0, 1},
 	{N_("_List of Channels..."), menu_chanlist, GTK_STOCK_INDEX, M_MENUITEM, 0, 0, 1},
 	{0, 0, 0, M_SEP, 0, 0, 0},
-#define AWAY_OFFSET (39)
+#define AWAY_OFFSET (41)
 	{N_("Marked _Away"), menu_away, 0, M_MENUTOG, MENU_ID_AWAY, 0, 1, GDK_a},
 
 	{N_("_Usermenu"), 0, 0, M_NEWMENU, MENU_ID_USERMENU, 0, 1},	/* 40 */
@@ -1762,7 +1781,7 @@ static struct mymenu mymenu[] = {
 	{N_("_Copy Selection"), menu_copy_selection, 0, M_MENUITEM, 0, 0, 1, GDK_C},
 	{N_("C_lear Text"), menu_flushbuffer, GTK_STOCK_CLEAR, M_MENUSTOCK, 0, 0, 1},
 	{N_("Save Text..."), menu_savebuffer, GTK_STOCK_SAVE, M_MENUSTOCK, 0, 0, 1},
-#define SEARCH_OFFSET 68
+#define SEARCH_OFFSET (70)
 	{N_("Search"), 0, GTK_STOCK_JUSTIFY_LEFT, M_MENUSUB, 0, 0, 1},
 		{N_("Search Text..."), menu_search, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_f},
 		{N_("Search Next"   ), menu_search_next, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_g},
@@ -1770,11 +1789,7 @@ static struct mymenu mymenu[] = {
 		{0, 0, 0, M_END, 0, 0, 0},
 
 	{N_("_Help"), 0, 0, M_NEWMENU, 0, 0, 1},	/* 74 */
-
 	{N_("_Contents"), menu_docs, GTK_STOCK_HELP, M_MENUSTOCK, 0, 0, 1, GDK_F1},
-#if 0
-	{N_("Check for updates"), menu_update, 0, M_MENUITEM, 0, 1},
-#endif
 	{N_("_About"), menu_about, GTK_STOCK_ABOUT, M_MENUSTOCK, 0, 0, 1},
 
 	{0, 0, 0, M_END, 0, 0, 0},
@@ -2296,6 +2311,7 @@ normalitem:
 				gtk_widget_add_accelerator (item, "activate", accel_group,
 										mymenu[i].key,
 										mymenu[i].key == GDK_F1 ? 0 :
+										mymenu[i].key == GDK_F11 ? 0 :
 										mymenu[i].key == GDK_w ? close_mask :
 										(g_ascii_isupper (mymenu[i].key)) ?
 											STATE_SHIFT | STATE_CTRL :
diff --git a/src/fe-gtk/plugin-tray.c b/src/fe-gtk/plugin-tray.c
index 731d5857..aa0b0cee 100644
--- a/src/fe-gtk/plugin-tray.c
+++ b/src/fe-gtk/plugin-tray.c
@@ -408,6 +408,7 @@ tray_toggle_visibility (gboolean force_hide)
 	static int x, y;
 	static GdkScreen *screen;
 	static int maximized;
+	static int fullscreen;
 	GtkWindow *win;
 
 	if (!sticon)
@@ -431,6 +432,7 @@ tray_toggle_visibility (gboolean force_hide)
 		gtk_window_get_position (win, &x, &y);
 		screen = gtk_window_get_screen (win);
 		maximized = prefs.hex_gui_win_state;
+		fullscreen = prefs.hex_gui_win_fullscreen;
 		gtk_widget_hide (GTK_WIDGET (win));
 	}
 	else
@@ -441,6 +443,8 @@ tray_toggle_visibility (gboolean force_hide)
 		gtk_window_move (win, x, y);
 		if (maximized)
 			gtk_window_maximize (win);
+		if (fullscreen)
+			gtk_window_fullscreen (win);
 		gtk_widget_show (GTK_WIDGET (win));
 		gtk_window_present (win);
 	}