Il 19/11/2010 13:38, Itamar Reis Peixoto ha scritto:
> 
> your patches doesnt apply clean in the git tree, you need to fix them
> to get it merged.
> 

They were against master tree.

Here are the updated ones.

Alessandro


>From 950979b900a3e9dd816fe7f88ecb4f7b1b674aa6 Mon Sep 17 00:00:00 2001
From: Alessandro Briosi <tsd...@briosix.org>
Date: Wed, 17 Nov 2010 17:52:25 +0100
Subject: [PATCH 1/5] Add background and defines for element size, plus a few graphics tweaks


Signed-off-by: Alessandro Briosi <tsd...@briosix.org>
---
 xrdp/xrdp_bitmap.c    |    8 ++++----
 xrdp/xrdp_login_wnd.c |   48 ++++++++++++++++++++++++------------------------
 xrdp/xrdp_types.h     |   15 +++++++++++++++
 xrdp/xrdp_wm.c        |   18 +++++++++++-------
 4 files changed, 54 insertions(+), 35 deletions(-)

diff --git a/xrdp/xrdp_bitmap.c b/xrdp/xrdp_bitmap.c
index 4ed4a23..925926d 100644
--- a/xrdp/xrdp_bitmap.c
+++ b/xrdp/xrdp_bitmap.c
@@ -1190,10 +1190,10 @@ xrdp_bitmap_invalidate(struct xrdp_bitmap* self, struct xrdp_rect* rect)
     xrdp_painter_fill_rect(painter, self, self->width - 1, 0, 1, self->height);
     /* black left line */
     painter->fg_color = self->wm->black;
-    xrdp_painter_fill_rect(painter, self, 1, 1, 1, self->height - 2);
+    xrdp_painter_fill_rect(painter, self, 1, 1, 1, self->height - 3);
     /* black top line */
     painter->fg_color = self->wm->black;
-    xrdp_painter_fill_rect(painter, self, 1, 1, self->width - 2, 1);
+    xrdp_painter_fill_rect(painter, self, 1, 1, self->width - 3, 1);
     /* draw text */
     painter->fg_color = self->wm->black;
     if (self->password_char != 0)
@@ -1267,10 +1267,10 @@ xrdp_bitmap_invalidate(struct xrdp_bitmap* self, struct xrdp_rect* rect)
     xrdp_painter_fill_rect(painter, self, self->width - 1, 0, 1, self->height);
     /* black left line */
     painter->fg_color = self->wm->black;
-    xrdp_painter_fill_rect(painter, self, 1, 1, 1, self->height - 2);
+    xrdp_painter_fill_rect(painter, self, 1, 1, 1, self->height - 3);
     /* black top line */
     painter->fg_color = self->wm->black;
-    xrdp_painter_fill_rect(painter, self, 1, 1, self->width - 2, 1);
+    xrdp_painter_fill_rect(painter, self, 1, 1, self->width - 3, 1);
     /* draw text */
     if (self->parent->focused_control == self)
     {
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 0d8ee1f..376defb 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -132,7 +132,7 @@ xrdp_wm_help_clicked(struct xrdp_bitmap* wnd)
   struct xrdp_bitmap* but;
 
   /* create help screen */
-  help = xrdp_bitmap_create(340, 300, wnd->wm->screen->bpp,
+  help = xrdp_bitmap_create(DEFAULT_WND_HELP_W, DEFAULT_WND_HELP_H, wnd->wm->screen->bpp,
                             WND_TYPE_WND, wnd->wm);
   list_insert_item(wnd->wm->screen->child_list, 0, (long)help);
   help->parent = wnd->wm->screen;
@@ -144,13 +144,13 @@ xrdp_wm_help_clicked(struct xrdp_bitmap* wnd)
   help->notify = xrdp_wm_login_help_notify;
   set_string(&help->caption1, "Login help");
   /* ok button */
-  but = xrdp_bitmap_create(60, 25, wnd->wm->screen->bpp,
+  but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, wnd->wm->screen->bpp,
                            WND_TYPE_BUTTON, wnd->wm);
   list_insert_item(help->child_list, 0, (long)but);
   but->parent = help;
   but->owner = help;
-  but->left = 140;
-  but->top = 260;
+  but->left = ((DEFAULT_WND_HELP_W / 2) - (DEFAULT_BUTTON_W / 2)); /* center */
+  but->top = DEFAULT_WND_HELP_H - DEFAULT_BUTTON_H - 15;
   but->id = 1;
   but->tab_stop = 1;
   set_string(&but->caption1, "OK");
@@ -261,28 +261,28 @@ xrdp_wm_show_edits(struct xrdp_wm* self, struct xrdp_bitmap* combo)
       if (g_strncmp("ask", value, 3) == 0)
       {
         /* label */
-        b = xrdp_bitmap_create(70, 20, self->screen->bpp,
+        b = xrdp_bitmap_create(70, DEFAULT_EDIT_H, self->screen->bpp,
                                WND_TYPE_LABEL, self);
         list_insert_item(self->login_window->child_list, insert_index,
                               (long)b);
         insert_index++;
         b->parent = self->login_window;
         b->owner = self->login_window;
-        b->left = self->login_window->width >= 400 ? 155 : 5;
-        b->top = 60 + 25 * count;
+        b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? 155 : 5;
+        b->top = 60 + (DEFAULT_EDIT_H+5) * count;
         b->id = 100 + 2 * count;
         name = (char*)list_get_item(mod->names, index);
         set_string(&b->caption1, name);
         /* edit */
-        b = xrdp_bitmap_create(140, 20, self->screen->bpp,
+        b = xrdp_bitmap_create(DEFAULT_EDIT_W, DEFAULT_EDIT_H, self->screen->bpp,
                                WND_TYPE_EDIT, self);
         list_insert_item(self->login_window->child_list, insert_index,
                               (long)b);
         insert_index++;
         b->parent = self->login_window;
         b->owner = self->login_window;
-        b->left = self->login_window->width >= 400 ? 230 : 70;
-        b->top = 60 + 25 * count;
+        b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? DEFAULT_WND_LOGIN_W - DEFAULT_EDIT_W - 30 : 70;
+        b->top = 60 + (DEFAULT_EDIT_H+5) * count;
         b->id = 100 + 2 * count + 1;
         b->pointer = 1;
         b->tab_stop = 1;
@@ -455,8 +455,8 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   int log_height;
   int regular;
 
-  log_width = 400;
-  log_height = 200;
+  log_width = DEFAULT_WND_LOGIN_W;
+  log_height = DEFAULT_WND_LOGIN_H;
   regular = 1;
   if (self->screen->width < log_width)
   {
@@ -521,7 +521,7 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   }
 
   /* label */
-  but = xrdp_bitmap_create(60, 20, self->screen->bpp, WND_TYPE_LABEL, self);
+  but = xrdp_bitmap_create(60, DEFAULT_EDIT_H, self->screen->bpp, WND_TYPE_LABEL, self);
   list_add_item(self->login_window->child_list, (long)but);
   but->parent = self->login_window;
   but->owner = self->login_window;
@@ -530,35 +530,35 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   set_string(&but->caption1, "Module");
 
   /* combo */
-  combo = xrdp_bitmap_create(140, 20, self->screen->bpp, WND_TYPE_COMBO, self);
+  combo = xrdp_bitmap_create(DEFAULT_COMBO_W, DEFAULT_COMBO_H, self->screen->bpp, WND_TYPE_COMBO, self);
   list_add_item(self->login_window->child_list, (long)combo);
   combo->parent = self->login_window;
   combo->owner = self->login_window;
-  combo->left = regular ? 230 : 70;
+  combo->left = regular ? DEFAULT_WND_LOGIN_W - DEFAULT_COMBO_W - 30 : 70;
   combo->top = 35;
   combo->id = 6;
   combo->tab_stop = 1;
   xrdp_wm_login_fill_in_combo(self, combo);
 
   /* button */
-  but = xrdp_bitmap_create(60, 25, self->screen->bpp, WND_TYPE_BUTTON, self);
+  but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
   list_add_item(self->login_window->child_list, (long)but);
   but->parent = self->login_window;
   but->owner = self->login_window;
-  but->left = regular ? 180 : 30;
-  but->top = 160;
+  but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W+10)*3) - 10 : 30;
+  but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
   but->id = 3;
   set_string(&but->caption1, "OK");
   but->tab_stop = 1;
   self->login_window->default_button = but;
 
   /* button */
-  but = xrdp_bitmap_create(60, 25, self->screen->bpp, WND_TYPE_BUTTON, self);
+  but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
   list_add_item(self->login_window->child_list, (long)but);
   but->parent = self->login_window;
   but->owner = self->login_window;
-  but->left = regular ? 250 : ((log_width - 30) - 60);
-  but->top = 160;
+  but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W+10)*2) - 10 : ((log_width - 30) - DEFAULT_BUTTON_W);
+  but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
   but->id = 2;
   set_string(&but->caption1, "Cancel");
   but->tab_stop = 1;
@@ -567,12 +567,12 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   if (regular)
   {
     /* button */
-    but = xrdp_bitmap_create(60, 25, self->screen->bpp, WND_TYPE_BUTTON, self);
+    but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
     list_add_item(self->login_window->child_list, (long)but);
     but->parent = self->login_window;
     but->owner = self->login_window;
-    but->left = 320;
-    but->top = 160;
+    but->left = DEFAULT_WND_LOGIN_W - (DEFAULT_BUTTON_W+10) - 10;
+    but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
     but->id = 1;
     set_string(&but->caption1, "Help");
     but->tab_stop = 1;
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 7d470e0..860bf81 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -227,6 +227,7 @@ struct xrdp_wm
   int white;
   int red;
   int green;
+  int background;
   /* dragging info */
   int dragging;
   int draggingx;
@@ -370,6 +371,20 @@ struct xrdp_bitmap
 #define NUM_FONTS 0x4e00
 #define DEFAULT_FONT_NAME "sans-10.fv1"
 
+#define DEFAULT_BUTTON_W      60
+#define DEFAULT_BUTTON_H      23
+#define DEFAULT_COMBO_W       140
+#define DEFAULT_COMBO_H       20
+#define DEFAULT_EDIT_W        140
+#define DEFAULT_EDIT_H        20
+#define DEFAULT_WND_LOGIN_W   400
+#define DEFAULT_WND_LOGIN_H   200
+#define DEFAULT_WND_HELP_W    340
+#define DEFAULT_WND_HELP_H    300
+#define DEFAULT_WND_LOG_W     400
+#define DEFAULT_WND_LOG_H     400
+#define DEFAULT_WND_SPECIAL_H 100
+
 /* font */
 struct xrdp_font
 {
diff --git a/xrdp/xrdp_wm.c b/xrdp/xrdp_wm.c
index 7500f38..bde3b66 100644
--- a/xrdp/xrdp_wm.c
+++ b/xrdp/xrdp_wm.c
@@ -315,6 +315,7 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
     self->white     = COLOR8(0xff, 0xff, 0xff);
     self->red       = COLOR8(0xff, 0x00, 0x00);
     self->green     = COLOR8(0x00, 0xff, 0x00);
+    self->background = COLOR8(0, 0, 0);
     xrdp_wm_send_palette(self);
   }
   else if (self->screen->bpp == 15)
@@ -327,6 +328,7 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
     self->white     = COLOR15(0xff, 0xff, 0xff);
     self->red       = COLOR15(0xff, 0x00, 0x00);
     self->green     = COLOR15(0x00, 0xff, 0x00);
+    self->background = COLOR15(0, 0, 0);
   }
   else if (self->screen->bpp == 16)
   {
@@ -338,6 +340,7 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
     self->white     = COLOR16(0xff, 0xff, 0xff);
     self->red       = COLOR16(0xff, 0x00, 0x00);
     self->green     = COLOR16(0x00, 0xff, 0x00);
+    self->background = COLOR16(0, 0, 0);
   }
   else if (self->screen->bpp == 24)
   {
@@ -349,6 +352,7 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
     self->white     = COLOR24BGR(0xff, 0xff, 0xff);
     self->red       = COLOR24BGR(0xff, 0x00, 0x00);
     self->green     = COLOR24BGR(0x00, 0xff, 0x00);
+    self->background = COLOR24BGR(0, 0, 0);
   }
   return 0;
 }
@@ -391,7 +395,7 @@ xrdp_wm_init(struct xrdp_wm* self)
 
   xrdp_wm_load_static_colors(self);
   xrdp_wm_load_static_pointers(self);
-  self->screen->bg_color = self->black;
+  self->screen->bg_color = self->background;
   if (self->session->client_info->rdp_autologin)
   {
     g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH);
@@ -1200,7 +1204,7 @@ xrdp_wm_pu(struct xrdp_wm* self, struct xrdp_bitmap* control)
   {
     return 0;
   }
-  self->popup_wnd = xrdp_bitmap_create(control->width, 100,
+  self->popup_wnd = xrdp_bitmap_create(control->width, DEFAULT_WND_SPECIAL_H,
                                        self->screen->bpp,
                                        WND_TYPE_SPECIAL, self);
   self->popup_wnd->popped_from = control;
@@ -1455,8 +1459,8 @@ xrdp_wm_log_msg(struct xrdp_wm* self, char* msg)
   list_add_item(self->log, (long)g_strdup(msg));
   if (self->log_wnd == 0)
   {
-    w = 400;
-    h = 400;
+    w = DEFAULT_WND_LOG_W;
+    h = DEFAULT_WND_LOG_H;
     xoffset = 10;
     yoffset = 10;
     if (self->screen->width < w)
@@ -1480,12 +1484,12 @@ xrdp_wm_log_msg(struct xrdp_wm* self, char* msg)
     self->log_wnd->top = yoffset;
     set_string(&(self->log_wnd->caption1), "Connection Log");
     /* ok button */
-    but = xrdp_bitmap_create(60, 25, self->screen->bpp, WND_TYPE_BUTTON, self);
+    but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
     list_insert_item(self->log_wnd->child_list, 0, (long)but);
     but->parent = self->log_wnd;
     but->owner = self->log_wnd;
-    but->left = (w - 60) - xoffset;
-    but->top = (h - 25) - yoffset;
+    but->left = (w - DEFAULT_BUTTON_W) - xoffset;
+    but->top = (h - DEFAULT_BUTTON_H) - yoffset;
     but->id = 1;
     but->tab_stop = 1;
     set_string(&but->caption1, "OK");
-- 
1.7.1

>From 44a64dc8d5a6c094d022833510090c1763ff6811 Mon Sep 17 00:00:00 2001
From: Alessandro Briosi <tsd...@briosix.org>
Date: Wed, 17 Nov 2010 18:16:49 +0100
Subject: [PATCH 2/5] Add possibility to change colors in xrdp.ini globals section


Signed-off-by: Alessandro Briosi <tsd...@briosix.org>
---
 common/defines.h |   13 +++++
 xrdp/xrdp.ini    |   10 ++++
 xrdp/xrdp_wm.c   |  160 +++++++++++++++++++++++++++++++++++++++---------------
 3 files changed, 138 insertions(+), 45 deletions(-)

diff --git a/common/defines.h b/common/defines.h
index a6f6e30..8e2328a 100644
--- a/common/defines.h
+++ b/common/defines.h
@@ -66,6 +66,19 @@
 #define COLOR16(r, g, b) ((((r) >> 3) << 11) | (((g) >> 2) << 5) | ((b) >> 3))
 #define COLOR24RGB(r, g, b) (((r) << 16) | ((g) << 8) | (b))
 #define COLOR24BGR(r, g, b) (((b) << 16) | ((g) << 8) | (r))
+#define HRED(c) ((c & 0xff0000) >> 16)
+#define HGREEN(c) ((c & 0x00ff00) >> 8)
+#define HBLUE(c) ((c & 0x0000ff))
+#define HCOLOR(bpp,c) \
+( \
+  (bpp==8?COLOR8(HRED(c),HGREEN(c),HBLUE(c)): \
+   (bpp==15?COLOR15(HRED(c),HGREEN(c),HBLUE(c)): \
+    (bpp==16?COLOR16(HRED(c),HGREEN(c),HBLUE(c)): \
+      (bpp==24?COLOR24BGR(HRED(c),HGREEN(c),HBLUE(c)):c) \
+    ) \
+   ) \
+  ) \
+)
 #define SPLITCOLOR15(r, g, b, c) \
 { \
   r = (((c) >> 7) & 0xf8) | (((c) >> 12) & 0x7); \
diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini
index 5b635dd..fdaa545 100644
--- a/xrdp/xrdp.ini
+++ b/xrdp/xrdp.ini
@@ -5,6 +5,16 @@ bitmap_compression=yes
 port=3389
 crypt_level=low
 channel_code=1
+#black=000000
+#grey=d6d3ce
+#dark_grey=808080
+#blue=08246b
+#dark_blue=08246b
+#white=ffffff
+#red=ff0000
+#green=00ff00
+#background=626c72
+
 
 [xrdp1]
 name=sesman-Xvnc
diff --git a/xrdp/xrdp_wm.c b/xrdp/xrdp_wm.c
index bde3b66..8c36abf 100644
--- a/xrdp/xrdp_wm.c
+++ b/xrdp/xrdp_wm.c
@@ -284,6 +284,30 @@ xrdp_wm_set_pointer(struct xrdp_wm* self, int cache_idx)
 }
 
 /*****************************************************************************/
+/* convert hex string to int */
+unsigned int xrdp_wm_htoi (const char *ptr)
+{
+  unsigned int value = 0;
+  char ch = *ptr;
+
+  while (ch == ' ' || ch == '\t')
+    ch = *(++ptr);
+
+  for (;;)
+  {
+    if (ch >= '0' && ch <= '9')
+      value = (value << 4) + (ch - '0');
+    else if (ch >= 'A' && ch <= 'F')
+      value = (value << 4) + (ch - 'A' + 10);
+    else if (ch >= 'a' && ch <= 'f')
+      value = (value << 4) + (ch - 'a' + 10);
+    else
+      return value;
+    ch = *(++ptr);
+  }
+}
+
+/*****************************************************************************/
 int APP_CC
 xrdp_wm_load_static_colors(struct xrdp_wm* self)
 {
@@ -291,6 +315,97 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
   int gindex;
   int rindex;
 
+  int fd;
+  int index;
+  char* val;
+  struct list* names;
+  struct list* values;
+  char cfg_file[256];
+
+  /* initialize with defaults */
+  self->black      = HCOLOR(self->screen->bpp,0x000000);
+  self->grey       = HCOLOR(self->screen->bpp,0xc0c0c0);
+  self->dark_grey  = HCOLOR(self->screen->bpp,0x808080);
+  self->blue       = HCOLOR(self->screen->bpp,0x0000ff);
+  self->dark_blue  = HCOLOR(self->screen->bpp,0x00007f);
+  self->white      = HCOLOR(self->screen->bpp,0xffffff);
+  self->red        = HCOLOR(self->screen->bpp,0xff0000);
+  self->green      = HCOLOR(self->screen->bpp,0x00ff00);
+  self->background = HCOLOR(self->screen->bpp,0x000000);
+
+  /* now load them from the globals in xrdp.ini if defined */
+  g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH);
+  fd = g_file_open(cfg_file);
+  if (fd > 0)
+  {
+    names = list_create();
+    names->auto_free = 1;
+    values = list_create();
+    values->auto_free = 1;
+    if (file_read_section(fd, "globals", names, values) == 0)
+    {
+      for (index = 0; index < names->count; index++)
+      {
+        val = (char*)list_get_item(names, index);
+        if (val != 0)
+        {
+          if (g_strcasecmp(val, "black") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->black = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));            
+          }
+          else if (g_strcasecmp(val, "grey") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->grey = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "dark_grey") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->dark_grey = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "blue") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->blue = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "dark_blue") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->dark_blue = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "white") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->white = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "red") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->red = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "green") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->green = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+          else if (g_strcasecmp(val, "background") == 0)
+          {
+            val = (char*)list_get_item(values, index);
+            self->background = HCOLOR(self->screen->bpp,xrdp_wm_htoi(val));
+          }
+        }
+      }
+    }
+    list_delete(names);
+    list_delete(values);
+    g_file_close(fd);
+  } 
+  else
+  { 
+    g_writeln("xrdp_wm_load_static_colors: Could not read xrdp.ini file %s", cfg_file);
+  }
+
   if (self->screen->bpp == 8)
   {
     /* rgb332 */
@@ -307,53 +422,8 @@ xrdp_wm_load_static_colors(struct xrdp_wm* self)
         }
       }
     }
-    self->black     = COLOR8(0, 0, 0);
-    self->grey      = COLOR8(0xc0, 0xc0, 0xc0);
-    self->dark_grey = COLOR8(0x80, 0x80, 0x80);
-    self->blue      = COLOR8(0x00, 0x00, 0xff);
-    self->dark_blue = COLOR8(0x00, 0x00, 0x7f);
-    self->white     = COLOR8(0xff, 0xff, 0xff);
-    self->red       = COLOR8(0xff, 0x00, 0x00);
-    self->green     = COLOR8(0x00, 0xff, 0x00);
-    self->background = COLOR8(0, 0, 0);
     xrdp_wm_send_palette(self);
   }
-  else if (self->screen->bpp == 15)
-  {
-    self->black     = COLOR15(0, 0, 0);
-    self->grey      = COLOR15(0xc0, 0xc0, 0xc0);
-    self->dark_grey = COLOR15(0x80, 0x80, 0x80);
-    self->blue      = COLOR15(0x00, 0x00, 0xff);
-    self->dark_blue = COLOR15(0x00, 0x00, 0x7f);
-    self->white     = COLOR15(0xff, 0xff, 0xff);
-    self->red       = COLOR15(0xff, 0x00, 0x00);
-    self->green     = COLOR15(0x00, 0xff, 0x00);
-    self->background = COLOR15(0, 0, 0);
-  }
-  else if (self->screen->bpp == 16)
-  {
-    self->black     = COLOR16(0, 0, 0);
-    self->grey      = COLOR16(0xc0, 0xc0, 0xc0);
-    self->dark_grey = COLOR16(0x80, 0x80, 0x80);
-    self->blue      = COLOR16(0x00, 0x00, 0xff);
-    self->dark_blue = COLOR16(0x00, 0x00, 0x7f);
-    self->white     = COLOR16(0xff, 0xff, 0xff);
-    self->red       = COLOR16(0xff, 0x00, 0x00);
-    self->green     = COLOR16(0x00, 0xff, 0x00);
-    self->background = COLOR16(0, 0, 0);
-  }
-  else if (self->screen->bpp == 24)
-  {
-    self->black     = COLOR24BGR(0, 0, 0);
-    self->grey      = COLOR24BGR(0xc0, 0xc0, 0xc0);
-    self->dark_grey = COLOR24BGR(0x80, 0x80, 0x80);
-    self->blue      = COLOR24BGR(0x00, 0x00, 0xff);
-    self->dark_blue = COLOR24BGR(0x00, 0x00, 0x7f);
-    self->white     = COLOR24BGR(0xff, 0xff, 0xff);
-    self->red       = COLOR24BGR(0xff, 0x00, 0x00);
-    self->green     = COLOR24BGR(0x00, 0xff, 0x00);
-    self->background = COLOR24BGR(0, 0, 0);
-  }
   return 0;
 }
 
-- 
1.7.1

>From f0a59f538472477b535101b8cc1f93cde00b4a27 Mon Sep 17 00:00:00 2001
From: Alessandro Briosi <tsd...@briosix.org>
Date: Thu, 18 Nov 2010 10:17:49 +0100
Subject: [PATCH 3/5] Add an arrow to the combo and make it look a little better


Signed-off-by: Alessandro Briosi <tsd...@briosix.org>
---
 xrdp/xrdp_bitmap.c |   19 +++++++++++++++++--
 xrdp/xrdp_types.h  |    4 ++--
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/xrdp/xrdp_bitmap.c b/xrdp/xrdp_bitmap.c
index 925926d..7cf7442 100644
--- a/xrdp/xrdp_bitmap.c
+++ b/xrdp/xrdp_bitmap.c
@@ -1287,13 +1287,28 @@ xrdp_bitmap_invalidate(struct xrdp_bitmap* self, struct xrdp_rect* rect)
     y = 2;
     w = (self->width - x) - 2;
     h = self->height - 4;
+    /* looks better with a background around */
+    painter->fg_color = self->wm->grey;
+    xrdp_painter_fill_rect(painter, self, x, y, w, h);
     if (self->state == BUTTON_STATE_UP) /* 0 */
     {
-      xrdp_bitmap_draw_button(self, painter, x, y, w, h, 0);
+      xrdp_bitmap_draw_button(self, painter, x+1, y+1, w-1, h-1, 0);
     }
     else
     {
-      xrdp_bitmap_draw_button(self, painter, x, y, w, h, 1);
+      xrdp_bitmap_draw_button(self, painter, x+1, y+1, w-1, h-1, 1);
+    }
+    /* draw the arrow */
+    w = w / 2;
+    x = x + (w / 2);
+    h = (h / 2) + 2;
+    y = y + (h / 2);
+    painter->fg_color = self->wm->black;
+    for (i=w; i>0; i=i-2) 
+    {
+      xrdp_painter_fill_rect(painter, self, x, y, i, 1);
+      y++;
+      x = x + 1;
     }
   }
   else if (self->type == WND_TYPE_SPECIAL) /* 8 special */
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 860bf81..17bc8a5 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -374,9 +374,9 @@ struct xrdp_bitmap
 #define DEFAULT_BUTTON_W      60
 #define DEFAULT_BUTTON_H      23
 #define DEFAULT_COMBO_W       140
-#define DEFAULT_COMBO_H       20
+#define DEFAULT_COMBO_H       21
 #define DEFAULT_EDIT_W        140
-#define DEFAULT_EDIT_H        20
+#define DEFAULT_EDIT_H        21
 #define DEFAULT_WND_LOGIN_W   400
 #define DEFAULT_WND_LOGIN_H   200
 #define DEFAULT_WND_HELP_W    340
-- 
1.7.1

>From 5628c2a088fa20e88fb53d1abb44dbde0bb602c8 Mon Sep 17 00:00:00 2001
From: Alessandro Briosi <tsd...@briosix.org>
Date: Thu, 18 Nov 2010 10:25:35 +0100
Subject: [PATCH 4/5] Change edit and combo default height and fix spacing of elements


Signed-off-by: Alessandro Briosi <tsd...@briosix.org>
---
 xrdp/xrdp_login_wnd.c |    8 ++++----
 xrdp/xrdp_types.h     |    1 +
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 376defb..2b39483 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -269,7 +269,7 @@ xrdp_wm_show_edits(struct xrdp_wm* self, struct xrdp_bitmap* combo)
         b->parent = self->login_window;
         b->owner = self->login_window;
         b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? 155 : 5;
-        b->top = 60 + (DEFAULT_EDIT_H+5) * count;
+        b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H+5) * count;
         b->id = 100 + 2 * count;
         name = (char*)list_get_item(mod->names, index);
         set_string(&b->caption1, name);
@@ -282,7 +282,7 @@ xrdp_wm_show_edits(struct xrdp_wm* self, struct xrdp_bitmap* combo)
         b->parent = self->login_window;
         b->owner = self->login_window;
         b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? DEFAULT_WND_LOGIN_W - DEFAULT_EDIT_W - 30 : 70;
-        b->top = 60 + (DEFAULT_EDIT_H+5) * count;
+        b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H+5) * count;
         b->id = 100 + 2 * count + 1;
         b->pointer = 1;
         b->tab_stop = 1;
@@ -526,7 +526,7 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   but->parent = self->login_window;
   but->owner = self->login_window;
   but->left = regular ? 155 : 5;
-  but->top = 35;
+  but->top = DEFAULT_ELEMENT_TOP;
   set_string(&but->caption1, "Module");
 
   /* combo */
@@ -535,7 +535,7 @@ xrdp_login_wnd_create(struct xrdp_wm* self)
   combo->parent = self->login_window;
   combo->owner = self->login_window;
   combo->left = regular ? DEFAULT_WND_LOGIN_W - DEFAULT_COMBO_W - 30 : 70;
-  combo->top = 35;
+  combo->top = DEFAULT_ELEMENT_TOP;
   combo->id = 6;
   combo->tab_stop = 1;
   xrdp_wm_login_fill_in_combo(self, combo);
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 17bc8a5..eb4d0ad 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -371,6 +371,7 @@ struct xrdp_bitmap
 #define NUM_FONTS 0x4e00
 #define DEFAULT_FONT_NAME "sans-10.fv1"
 
+#define DEFAULT_ELEMENT_TOP   35
 #define DEFAULT_BUTTON_W      60
 #define DEFAULT_BUTTON_H      23
 #define DEFAULT_COMBO_W       140
-- 
1.7.1

>From 6fe5335519de60eed8d4e5feaabbcfabdbba69d5 Mon Sep 17 00:00:00 2001
From: Alessandro Briosi <tsd...@briosix.org>
Date: Thu, 18 Nov 2010 10:28:56 +0100
Subject: [PATCH 5/5] fix arrow position


Signed-off-by: Alessandro Briosi <tsd...@briosix.org>
---
 xrdp/xrdp_bitmap.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xrdp/xrdp_bitmap.c b/xrdp/xrdp_bitmap.c
index 7cf7442..df2f9e5 100644
--- a/xrdp/xrdp_bitmap.c
+++ b/xrdp/xrdp_bitmap.c
@@ -1300,9 +1300,9 @@ xrdp_bitmap_invalidate(struct xrdp_bitmap* self, struct xrdp_rect* rect)
     }
     /* draw the arrow */
     w = w / 2;
-    x = x + (w / 2);
+    x = x + (w / 2) + 1;
     h = (h / 2) + 2;
-    y = y + (h / 2);
+    y = y + (h / 2) + 1;
     painter->fg_color = self->wm->black;
     for (i=w; i>0; i=i-2) 
     {
-- 
1.7.1

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
xrdp-devel mailing list
xrdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xrdp-devel

Reply via email to