[cheese] window: remove initial black bars (at least for 4:3 webcams)
- From: Filippo Argiolas <fargiolas src gnome org>
- To: svn-commits-list gnome org
- Subject: [cheese] window: remove initial black bars (at least for 4:3 webcams)
- Date: Tue, 26 May 2009 12:13:33 -0400 (EDT)
commit dd1efbf7000c1331d05014cfde3b9abc3e985ca1
Author: Filippo Argiolas <filippo argiolas gmail com>
Date: Tue May 26 08:48:05 2009 +0200
window: remove initial black bars (at least for 4:3 webcams)
Set a size request on the drawing area, get the requisition computed on
the main window and use it as default size. Then the first size request
can be removed and the window will keep the size we requested.
Handy trick to set default size of the drawing area without limiting its
minimum size.
---
data/cheese.glade | 4 ----
data/cheese.ui | 4 ----
src/cheese-window.c | 17 ++++++++++++++++-
3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/data/cheese.glade b/data/cheese.glade
index 36342c2..9a61eba 100644
--- a/data/cheese.glade
+++ b/data/cheese.glade
@@ -4,8 +4,6 @@
<!-- interface-naming-policy toplevel-contextual -->
<widget class="GtkWindow" id="cheese_window">
<property name="title" translatable="yes">Cheese</property>
- <property name="default_width">640</property>
- <property name="default_height">670</property>
<property name="icon_name">cheese</property>
<child>
<widget class="GtkVBox" id="main_vbox">
@@ -41,8 +39,6 @@
</child>
<child>
<widget class="GtkDrawingArea" id="video_screen">
- <property name="width_request">320</property>
- <property name="height_request">240</property>
<property name="visible">True</property>
</widget>
<packing>
diff --git a/data/cheese.ui b/data/cheese.ui
index 1e38dd3..008eb26 100644
--- a/data/cheese.ui
+++ b/data/cheese.ui
@@ -4,8 +4,6 @@
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="cheese_window">
<property name="title" translatable="yes">Cheese</property>
- <property name="default_width">640</property>
- <property name="default_height">670</property>
<property name="icon_name">cheese</property>
<child>
<object class="GtkVBox" id="main_vbox">
@@ -41,8 +39,6 @@
</child>
<child>
<object class="GtkDrawingArea" id="video_screen">
- <property name="width_request">320</property>
- <property name="height_request">240</property>
<property name="visible">True</property>
</object>
<packing>
diff --git a/src/cheese-window.c b/src/cheese-window.c
index 0712926..fd5727b 100644
--- a/src/cheese-window.c
+++ b/src/cheese-window.c
@@ -61,6 +61,8 @@
#define FULLSCREEN_POPUP_HEIGHT 40
#define FULLSCREEN_TIMEOUT 5 * 1000
#define FULLSCREEN_EFFECTS_TIMEOUT 15
+#define DEFAULT_WINDOW_WIDTH 600
+#define DEFAULT_WINDOW_HEIGHT 450
typedef enum
{
@@ -1661,6 +1663,8 @@ cheese_window_create_window (CheeseWindow *cheese_window)
cheese_window->thumb_view = cheese_thumb_view_new ();
cheese_window->thumb_nav = eog_thumb_nav_new (cheese_window->thumb_view, TRUE);
gtk_container_add (GTK_CONTAINER (cheese_window->thumb_scrollwindow), cheese_window->thumb_nav);
+ /* show the scroll window to get it included in the size requisition done later */
+ gtk_widget_show_all (cheese_window->thumb_scrollwindow);
char *gconf_effects;
g_object_get (cheese_window->gconf, "gconf_prop_selected_effects", &gconf_effects, NULL);
@@ -1951,6 +1955,7 @@ setup_camera (CheeseWindow *cheese_window)
gtk_widget_set_sensitive (GTK_WIDGET (cheese_window->take_picture), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (cheese_window->take_picture_fullscreen), TRUE);
gtk_action_group_set_sensitive (cheese_window->actions_effects, TRUE);
+
gdk_threads_leave ();
}
@@ -1978,7 +1983,6 @@ cheese_window_init (char *hal_dev_udi, CheeseDbus *dbus_server)
cheese_window_create_window (cheese_window);
gtk_action_group_set_sensitive (cheese_window->actions_effects, FALSE);
- gtk_widget_show_all (cheese_window->window);
ephy_spinner_start (EPHY_SPINNER (cheese_window->throbber));
gtk_notebook_set_current_page (GTK_NOTEBOOK (cheese_window->notebook), 2);
@@ -1986,6 +1990,17 @@ cheese_window_init (char *hal_dev_udi, CheeseDbus *dbus_server)
cheese_window->webcam_mode = WEBCAM_MODE_PHOTO;
cheese_window->recording = FALSE;
+ /* handy trick to set default size of the drawing area while not
+ * limiting its minimum size, thanks Owen! */
+ GtkRequisition req;
+ gtk_widget_set_size_request (cheese_window->screen,
+ DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);
+ gtk_widget_size_request (cheese_window->window, &req);
+ gtk_window_set_default_size (GTK_WINDOW (cheese_window->window), req.width, req.height);
+ gtk_widget_set_size_request (cheese_window->screen, -1, -1);
+
+ gtk_widget_show_all (cheese_window->window);
+
/* Run cam setup in its own thread */
GError *error = NULL;
if (!g_thread_create ((GThreadFunc) setup_camera, cheese_window, FALSE, &error))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]